c语言中线程如何判断某个函数是否结束
时间: 2024-10-16 13:13:06 浏览: 48
在C语言中,要判断一个线程是否结束,通常需要使用`pthread_join()`函数。这个函数用于等待线程执行完毕。当调用`pthread_join(thread_id, NULL)`时,主线程会阻塞,直到指定的线程(通过`thread_id`参数)终止或者遇到`pthread_exit()`。
下面是一个示例,展示了如何使用`pthread_join()`来检测线程是否结束:
```c
#include <stdio.h>
#include <pthread.h>
void* myFunction(void *arg) {
printf("线程开始运行...\n");
// 这里模拟一些工作...
sleep(5); // 延迟一段时间让线程看起来像是在执行任务
printf("线程结束\n");
pthread_exit(NULL); // 线程结束并返回NULL
}
int main() {
pthread_t thread_id;
// 创建新线程
if (pthread_create(&thread_id, NULL, myFunction, NULL) != 0) {
perror("创建线程失败");
return -1;
}
// 等待线程完成
if (pthread_join(thread_id, NULL) != 0) {
perror("等待线程完成失败");
return -1;
}
printf("主线程已确认子线程结束。\n");
return 0;
}
```
在这个例子中,当主线程执行到`pthread_join(thread_id, NULL)`时,它会阻塞直到`myFunction()`线程结束。如果线程提前结束(如通过`pthread_exit(NULL)`),`pthread_join()`也会立即返回,表明线程已经结束了。
阅读全文