pthread_testcancel和pthread_cancel函数的简单示例
/*0.取消线程 int pthread_cancel(pthread_t thread); 设置取消点 void pthread_testcancel(void); 测试是否接收到取消请求,如果有,结束线程。 例子:*/ #include <stdlib.h> #include <pthread.h> #include <stdio.h> #include <sched.h> int a = 0; void *thread1(void *arg) { pthread_testcancel(); 这个函数非常重要要和 pthread_cancel(t1),结合起来使用; a = 10; } /*如果改为: int a = 0; void *thread1(void *arg) { a = 10; pthread_testcancel(); } 运行结果:a值被修改了 main start main end, a=10*/ int main(int argc, char *argv[]) { pthread_t t1, t2, t3; int ret, i; printf("main start\n"); ret = pthread_create(&t1, NULL, thread1, NULL); pthread_cancel(t1); pthread_join(t1, NULL); sleep(3); printf("main end, a=%d\n", a); return 0; } /*运行结果:在取消点处程序结束,a值未该。 main start main end, a=0*/