实例10-1.c

来自「Linux下C语言编程例子」· C语言 代码 · 共 50 行

C
50
字号
#include <stdio.h> 
#include <pthread.h> 
#include <unistd.h> 
pthread_mutex_t mutex; 
pthread_cond_t cond; 
void * child1(void *arg) 
{ 
    pthread_cleanup_push(pthread_mutex_unlock,&mutex); /* comment 1 */ 
    while(1){ 
   printf("thread 1 get running \n"); 
   printf("thread 1 pthread_mutex_lock returns %d\n", 
   pthread_mutex_lock(&mutex)); 
   pthread_cond_wait(&cond,&mutex); 
   printf("thread 1 condition applied\n"); 
   pthread_mutex_unlock(&mutex); 
   sleep(5); 
} 
pthread_cleanup_pop(0); /* comment 2 */ 
} 
void *child2(void *arg) 
{ 
   while(1){ 
   sleep(3); /* comment 3 */ 
   printf("thread 2 get running.\n"); 
   printf("thread 2 pthread_mutex_lock returns %d\n", 
   pthread_mutex_lock(&mutex)); 
   pthread_cond_wait(&cond,&mutex); 
   printf("thread 2 condition applied\n"); 
   pthread_mutex_unlock(&mutex); 
   sleep(1); 
} 
} 
int main(void) 
{ 
   int tid1,tid2; 
   printf("hello, condition variable test\n"); 
   pthread_mutex_init(&mutex,NULL); 
   pthread_cond_init(&cond,NULL); 
   pthread_create(&tid1,NULL,child1,NULL); 
   pthread_create(&tid2,NULL,child2,NULL); 
  do{ 
  sleep(2); /* comment 4 */ 
  pthread_cancel(tid1); /* comment 5 */ 
  sleep(2); /* comment 6 */ 
  pthread_cond_signal(&cond); 
  }while(1); 
  sleep(100); 
  pthread_exit(0); 
}

⌨️ 快捷键说明

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