linux条件锁和互斥锁是怎样的?
linux条件锁和互斥锁是怎样的?
等待线程 1。使用pthread_cond_wait前要先加锁 2。pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活 3。pthread_cond_wait被激活后会再自动加锁 激活线程: 1。加锁(和等待线程用同一个锁) 2。
pthread_cond_signal发送信号 3。解锁 激活线程的上面三个操作在运行时间上都在等待线程的pthread_cond_wait函数内部。
程序示例: #include #include #include pthread_mutex_t count_lock; pthread_cond_t count_nonzero; unsigned count = 0; void * decrement_count(void *arg) { pthread_mutex_lock (&count_lock); printf("decrement_count get count_lock\n"); while(count==0) { printf("decrement_count count == 0 \n"); printf("decrement_count before cond_wait \n"); pthread_cond_wait( &count_nonzero, &count_lock); printf("decrement_count after cond_wait \n"); } count = count -1; pthread_mutex_unlock (&count_lock); } void * increment_count(void *arg){ pthread_mutex_lock(&count_lock); printf("increment_count get count_lock\n"); if(count==0) { printf("increment_count before cond_signal\n"); pthread_cond_signal(&count_nonzero); printf("increment_count after cond_signal\n"); } count=count+1; pthread_mutex_unlock(&count_lock); } int main(void) { pthread_t tid1,tid2; pthread_mutex_init(&count_lock,NULL); pthread_cond_init(&count_nonzero,NULL); pthread_create(&tid1,NULL,decrement_count,NULL); sleep(2); pthread_create(&tid2,NULL,increment_count,NULL); sleep(10); pthread_exit(0); }。
答:互斥事件,就是说如果发生了事件A,事件B就不可能发生,就说事件A与B为互斥事件.详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>