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