生产者与消费者问题 之锁的顺序
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前,系统开销小点。
浙公网安备 33010602011771号