使用C语言写一段pthread_cancel回收线程的代码
时间: 2023-05-22 15:02:04 浏览: 142
以下是使用C语言写一段pthread_cancel回收线程的代码:
```c
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *thread_func(void *arg) {
int i;
for (i = 0; i < 10; i++) {
printf("Thread %d is running\n", *(int *)arg);
sleep(1);
}
pthread_exit(NULL);
}
int main() {
pthread_t thread;
int thread_id = 1;
int ret = pthread_create(&thread, NULL, thread_func, &thread_id);
if (ret != 0) {
printf("Error: pthread_create() failed\n");
exit(EXIT_FAILURE);
}
sleep(3);
ret = pthread_cancel(thread);
if (ret != 0) {
printf("Error: pthread_cancel() failed\n");
exit(EXIT_FAILURE);
}
ret = pthread_join(thread, NULL);
if (ret != 0) {
printf("Error: pthread_join() failed\n");
exit(EXIT_FAILURE);
}
printf("Thread %d has been canceled\n", thread_id);
return 0;
}
```
这段代码创建了一个线程,然后等待3秒钟后使用pthread_cancel函数取消该线程,并使用pthread_join函数回收线程。在线程函数中,我们使用了一个循环来模拟线程的运行过程。
阅读全文