pthread_create函数使用
时间: 2023-09-20 16:05:47 浏览: 102
pthread_create() 函数用于创建一个新的线程。它的语法格式如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
其中,参数thread是一个指向pthread_t类型的指针,用于存储新线程的标识符。attr是一个指向pthread_attr_t类型的指针,用于指定线程的属性,一般情况下可以设置为NULL。start_routine是一个指向函数的指针,该函数将作为新线程的入口点。arg是传递给start_routine函数的参数,可以是任意类型的指针。
下面是一个使用pthread_create()函数的样例:
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
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);
if (res != 0) {
printf("线程创建失败");
return 0;
}
sleep(5);
res = pthread_create(&myThread2, NULL, ThreadFun, (void*)url);
if (res != 0) {
printf("线程创建失败");
return 0;
}
sleep(5);
return 0;
}
在上述样例中,我们通过pthread_create()函数分别创建了两个线程myThread1和myThread2。其中,myThread1没有传递参数,而myThread2传递了一个指向url字符串的指针作为参数。这两个线程会执行ThreadFun()函数,并根据传递的参数进行相应的操作。主线程通过调用sleep()函数等待两个子线程执行完成。
阅读全文