使用pthread_create()创建一个子线程,并在线程中显示:“20221605的子线程在运行”。主线程等待子线程终止。
时间: 2024-10-17 10:15:30 浏览: 17
在C语言中,你可以使用`pthread_create()`函数来创建一个新的子线程。这个函数需要四个参数:线程函数的指针、线程数据(通常是一个指向void类型的指针)、新线程的堆栈大小和线程标识符。以下是一个简单的示例,展示如何创建子线程并在其中打印指定的消息:
```c
#include <stdio.h>
#include <pthread.h>
// 线程函数
void* thread_function(void* arg) {
printf("20221605的子线程在运行\n");
pthread_exit(NULL); // 结束线程并返回控制权给主线程
}
int main() {
pthread_t child_thread; // 存储子线程ID
pthread_attr_t attr; // 线程属性
// 初始化线程属性
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // 设置为自动删除线程(当主线程退出时,子线程也终止)
// 创建子线程
if (pthread_create(&child_thread, &attr, thread_function, NULL) != 0) {
perror("创建子线程失败");
return 1;
}
// 主线程可以继续执行其他任务,这里不做阻塞
// 如果你想让主线程等待子线程结束,可以添加pthread_join(child_thread, NULL);
// 等待子线程完成
pthread_join(child_thread, NULL);
printf("子线程已结束\n");
pthread_attr_destroy(&attr); // 销毁线程属性
return 0;
}
```
在这个例子中,主线程创建了子线程`thread_function`,该函数会打印消息"20221605的子线程在运行"。`pthread_create()`成功后,主线程不会立即阻塞,而是继续执行。当你想让主线程等待子线程结束后,可以使用`pthread_join()`。
阅读全文