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*/

 

posted @ 2014-09-26 23:37  南哥的天下  阅读(1298)  评论(0编辑  收藏  举报