互斥锁(又名互斥量)
互斥锁类型: pthread_mutex_t mutex;
步骤:
- 创建互斥锁 pthread_mutex_t mutex;
- 初始化锁:pthread_mutex_init (&mutex, NULL);
- 寻找共享资源
操作共享资源的代码前加锁: pthread_mutex_lock(&mutex); 成功则返回0
.。。。。
pthread_mutex_unlock (&mutex); 成功返回1
互斥锁锁住的代码块越大,效率越低。临界区:被lock和unlock锁住的区间叫临界区
一旦使用互斥锁,则所有线程都要加锁。
注意:
一段代码,线程1加了锁之后,执行到一半时间片到了,线程2执行,但不能执行临界区的代码,时间片再到,切换到线程1,再执行剩下的操作,再解锁。