12-3.c

来自「提供了许多线程间通信的实例程序。用linux下的C语言实现。」· C语言 代码 · 共 41 行

C
41
字号
 #include <stdio.h>
 #include <pthread.h>
 pthread_key_t   key;
 
 void echomsg(int t)
 {
   printf("destructor excuted in thread %d,param=%d\n",pthread_self(),t);    
	
 }
 void * child1(void *arg)
 {
       int tid=pthread_self();
       printf("thread %d enter\n",tid);
      pthread_setspecific(key,(void *)tid);
      sleep(2);
      printf("thread %d returns %d\n",tid,pthread_getspecific(key));
     sleep(5);
}
	
void * child2(void *arg)
{
     int tid=pthread_self();
     printf("thread %d enter\n",tid);
     pthread_setspecific(key,(void *)tid);
     sleep(1);
     printf("thread %d returns %d\n",tid,pthread_getspecific(key));
     sleep(5);
}

 int main(void)
 {
    int tid1,tid2;
    printf("hello\n");
    pthread_key_create(&key,echomsg);
    pthread_create(&tid1,NULL,child1,NULL);
    pthread_create(&tid2,NULL,child2,NULL);
    sleep(10);
    pthread_key_delete(key);
    printf("main thread exit\n");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?