如何理解互斥锁、条件变量、读写锁以及自旋锁?
时间:2021-10-28 15:36:33
手机看文章
扫描二维码
随时随地手机看文章
[导读]锁是一个常见的同步概念,我们都听说过加锁(lock)或者解锁(unlock),当然学术一点的说法是获取(acquire)和释放(release)。恰好pthread包含这几种锁的API,而C11只包含其中的部分。接下来我主要通过pthread的API来展开本文。mutex(互斥量...
锁是一个常见的同步概念,我们都听说过加锁(lock)或者解锁(unlock),当然学术一点的说法是获取(acquire)和释放(release)。恰好pthread包含这几种锁的API,而C 11只包含其中的部分。接下来我主要通过pthread的API来展开本文。
mutex(互斥量)
mutex(mutual exclusive)即互斥量(互斥体)。也便是常说的互斥锁。尽管名称不含lock,但是称之为锁,也是没有太大问题的。mutex无疑是最常见的多线程同步方式。其思想简单粗暴,多线程共享一个互斥量,然后线程之间去竞争。得到锁的线程可以进入临界区执行代码。// 声明一个互斥量
pthread_mutex_t mtx;
// 初始化
pthread_mutex_init(