pthread_testcancelとpthread_cancel関数の簡単な例

2517 ワード

/*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
"); ret = pthread_create(&t1, NULL, thread1, NULL); pthread_cancel(t1); pthread_join(t1, NULL); sleep(3); printf("main end, a=%d
", a); return 0; } /* : ,a 。 main start main end, a=0*/