在线程中对资源的访问,很多时候要遵循院子操作,这时候就需要用互斥锁了。
int x; // 进程中的全局变量
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL); //按缺省的属性初始化互斥体变量mutex
pthread_mutex_lock(&mutex); // 给互斥体变量加锁
… //对变量x 的操作
phtread_mutex_unlock(&mutex); // 给互斥体变量解除锁
- 在上锁之前必须保证是已经解锁状态,如果没有解锁会一直阻塞在pthread_mutex_lock(&mutex);此处
- 如果需要非阻塞的锁,那么需要用pthread_mutex_trylock,如果成功返回0,失败返回非零值,哈哈,很皮是不是