首页 > 代码库 > .取消线程

.取消线程

/*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 startmain 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 startmain end, a=0*/

 

.取消线程