可以调用 pthread_create 的完整线程代码示例
时间: 2023-07-01 13:29:16 浏览: 80
Linux进程控制——线程创建pthread_create()
5星 · 资源好评率100%
下面是一个使用pthread_create的完整线程代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
void* thread_func(void* arg) {
int i;
int* p = (int*)arg;
for(i = 0; i < *p; i++) {
printf("thread_func: i=%d\n", i);
sleep(1);
}
return NULL;
}
int main() {
pthread_t thread;
int ret;
int num = 5;
ret = pthread_create(&thread, NULL, thread_func, &num);
if(ret != 0) {
printf("pthread_create failed\n");
exit(-1);
}
ret = pthread_join(thread, NULL);
if(ret != 0) {
printf("pthread_join failed\n");
exit(-1);
}
printf("main thread exit\n");
return 0;
}
```
在该示例中,主线程调用pthread_create函数创建一个新线程,并将参数num的地址传递给新线程。新线程通过循环来输出计数器的值,并在每次输出后休眠1秒。当计数器达到num的值时,新线程通过返回NULL来正常结束线程。最后,主线程通过pthread_join函数等待新线程的结束,并回收线程占用的资源。
需要注意的是,在使用pthread_create函数创建新线程时,必须指定线程的入口函数和参数,否则新线程将无法运行。在本例中,新线程的入口函数为thread_func,参数为指向num的指针。在新线程中,可以通过强制类型转换来获取参数的值。
阅读全文