生产者与消费者问题 之锁的顺序

   1:  /* 生产者方法 */ 
   2:  void *product(){
   3:      sem_wait(&empty_sem);
   4:      pthread_mutex_lock(&mutex);
   5:      /*生产*/
   6:     pthread_mutex_unlock(&mutex);
   7:     sem_post(&full_sem);  
   8:  
   9:  /* 消费者方法 */
  10:  void *consumer(){
  11:     sem_wait(&full_sem);
  12:     pthread_mutex_lock(&mutex);
  13:     /*消费*/
  14:     pthread_mutex_unlock(&mutex);
  15:     sem_post(&empty_sem);
  16:  }
 

sem_wait()和pthread_mutext_lock是不能交换位置的;

pthread_mutex_unlock()和sem_post()是可以交换位置的,那么

我个人觉得sem_post在pthread_mutext_unlock前,系统开销小点。

posted @ 2012-09-26 11:16  jiejnan  阅读(286)  评论(0编辑  收藏  举报