参考文章: 《linux下多种锁的比较》 https://blog.csdn.net/kowzb/article/details/77160249

总体

锁的使用,遵循“谁来加锁,就由谁解锁”的原则
一般讨论的锁是线程锁,不是进程锁。 linuxpthread 库对线程锁提供支持。
pthread 提供了自旋锁,互斥锁,条件变量等。

锁机制 - 图1

互斥锁

涉及到的操作有:

  1. // 创建互斥锁
  2. pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
  3. int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t*mutexattr);
  4. // 销毁互斥锁
  5. int pthread_mutex_destroy(pthread_mutex_t *mutex);
  6. // 加锁
  7. int pthread_mutex_lock(pthread_mutex_t *mutex);
  8. int pthread_mutex_unlock(pthread_mutex_t *mutex);
  9. int pthread_mutex_trylock(pthread_mutex_t *mutex);