pthread create
时间: 2023-08-28 11:07:34 浏览: 73
Thread创建
pthread_create() 函数是一个用于创建线程的函数,它的声明在<pthread.h>头文件中。函数的语法格式如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); [1]
通过这个函数,我们可以创建一个新的线程,并指定线程的属性、线程执行的函数以及传递给线程函数的参数。
下面是一个使用pthread_create()函数的样例代码:
#include <stdio.h>
#include <unistd.h> //调用 sleep() 函数
#include <pthread.h> //调用 pthread_create() 函数
void *ThreadFun(void *arg) {
if (arg == NULL) {
printf("arg is NULL\n");
} else {
printf("%s\n", (char*)arg);
}
return NULL;
}
int main() {
int res;
char * url = "http://www.biancheng.net";
pthread_t myThread1,myThread2; //定义两个表示线程的变量(标识符)
res = pthread_create(&myThread1, NULL, ThreadFun, NULL); //创建 myThread1 线程
if (res != 0) {
printf("线程创建失败");
return 0;
}
sleep(5); //令主线程等到 myThread1 线程执行完成
res = pthread_create(&myThread2, NULL, ThreadFun, (void*)url); //创建 myThread2 线程
if (res != 0) {
printf("线程创建失败");
return 0;
}
sleep(5); // 令主线程等到 mythread2 线程执行完成
return 0;
} [2]
在这个样例中,我们通过pthread_create()函数成功创建了两个线程,分别是myThread1和myThread2。线程函数ThreadFun用于在线程中执行具体的任务。我们可以通过传递参数给线程函数来定制不同的功能。在这个样例中,我们分别使用NULL和url作为参数传递给线程函数。
通过调用sleep()函数,我们可以让主线程等待子线程的执行完成。这样可以确保线程的执行顺序。
pthread_create()函数可以灵活地创建多个线程,通过指定不同的线程函数和参数,可以实现不同的并发操作。 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【多线程编程学习笔记3】创建线程函数pthread_create()详解](https://blog.csdn.net/qq_41854911/article/details/118718848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文