爱问知识人 爱问教育 医院库

linux条件锁和互斥锁是怎样的?

首页

linux条件锁和互斥锁是怎样的?

linux条件锁和互斥锁是怎样的?

提交回答

全部答案

    2017-07-27 20:56:07
  •   等待线程  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);  }。

    起***

    2017-07-27 20:56:07

类似问题

换一换
  • 系统软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):