C语言threads.h线程外终止线程
时间: 2023-12-29 14:25:10 浏览: 168
线程终止问题
根据引用[1],C11标准的线程库threads.h并不是所有编译器都支持的,因此我们可以使用pthread.h的API来创建线程。而根据引用,pthread.h的API可以在Linux系统上使用,可以使用pthread_create()函数来创建线程。如果要在Windows系统上使用pthread.h,可以使用pthreads-w32版本,并且在编译时需要链接pthread库。
关于C语言如何在线程外终止线程,可以使用pthread_cancel()函数。该函数可以向指定线程发送取消请求,使得该线程在接收到请求后尽快退出。需要注意的是,该函数并不能保证线程立即终止,因为线程可能会在任意时刻响应取消请求。
以下是一个使用pthread_cancel()函数终止线程的例子:
```c
#include <stdio.h>
#include <pthread.h>
void *thread_func(void *arg) {
while (1) {
printf("Thread is running...\n");
sleep(1);
}
return NULL;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
sleep(5);
pthread_cancel(tid);
printf("Thread is canceled.\n");
pthread_join(tid, NULL);
return 0;
}
```
在上面的例子中,我们创建了一个线程并让它不断输出一条信息。在主线程中,我们等待5秒钟后使用pthread_cancel()函数向该线程发送取消请求。最后,我们使用pthread_join()函数等待该线程退出。
阅读全文