condition.c

来自「此源码是著名的教材BeginningLinux Programming中文名字叫」· C语言 代码 · 共 53 行

C
53
字号
#include <stdio.h> 
#include <unistd.h>
#include <pthread.h>  

pthread_mutex_t	mutex; 
pthread_cond_t	cond; 

void *thread1(void *arg) 
{ 
	pthread_cleanup_push (pthread_mutex_unlock, &mutex); 

	while(1) { 
		printf ("thread1 is running\n"); 
		pthread_mutex_lock (&mutex); 
		pthread_cond_wait (&cond, &mutex); 
		printf ("thread1 applied the condition\n"); 
		pthread_mutex_unlock (&mutex); 
		sleep (4); 
	} 

	pthread_cleanup_pop (0); 
} 

void *thread2(void *arg) 
{ 
	while(1) { 
		printf ("thread2 is running\n"); 
		pthread_mutex_lock (&mutex); 
		pthread_cond_wait (&cond, &mutex); 
		printf ("thread2 applied the condition\n"); 
		pthread_mutex_unlock (&mutex); 
		sleep (1); 
	} 
}
 
int main(void) 
{ 
	pthread_t tid1, tid2; 

	printf ("condition variable study! \n"); 
	pthread_mutex_init (&mutex, NULL); 
	pthread_cond_init (&cond, NULL); 
	pthread_create (&tid1, NULL, (void *) thread1, NULL); 
	pthread_create (&tid2, NULL, (void *) thread2, NULL); 

	do { 
		pthread_cond_signal (&cond); 
	} while (1); 

	sleep (50); 
	pthread_exit (0); 
}

⌨️ 快捷键说明

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