想像这儿有两个互斥量,我们分别称它们为count_mutex和rand_mutex。
到目前为止,都是在数据结构中使用一个或多个互斥锁管理同步。
互斥对象将插入一道“内存关卡”,由它来确保对主存的写入按照线程锁定互斥对象的顺序进行。
互斥体能让一个或多个数据对象相互排斥。互斥体是线程同步的主要手段。
但是,并行编程不只是在随便什么函数和方法中使用互斥锁和条件变量。
健壮的互斥锁解决了在持有锁的应用程序崩溃后正确清理锁的问题。
您还应该基本了解线程的创建、互斥锁和条件变量。
最后,我们讨论构建在原子API上的内核互斥锁。
快速用户空间互斥(也被称为futexes)支持Linuxpthread互斥锁。
基本上没有代码空间开销,你不需要信号量或互斥锁。
我为共享的数据结构增加了互斥体,还给大多数方法上了锁。
大进程间通讯的的基石是信号灯和互斥。
但是互斥锁比当前的内核信号量选项更快,并且更加紧凑,因此如果它们满足您的需求,那么它们将是您明智的选择。
我使用互斥体和自旋锁(spinlock)的组合方案来保证同步。
高级别的接口可以简化代码,即使仍然有互斥这一类的东西。
另外一个问题是互斥锁的争夺会造成优先权倒置。
大部分进程间通讯的建立的基石是信号灯和互斥。