我有一个跨线程访问的对象(一种队列)。队列对象在被任一线程使用之前可以被互斥锁。
一个更简单的管理方法是将锁引入队列对象本身 - 因此每个 API 都会锁定队列并在工作完成时释放。这样,线程不必与每个队列一起管理额外的互斥变量。
现在我的问题是,有时只有一个线程正在访问队列(比如说它是一个局部变量)。但既然现在队列本质上会先锁定其内部数据结构并在离开之前解锁,这会是一件代价高昂的事情吗?
当没有特别需要线程同步时,冗余 mutex_lock 和 mutex_unlock 操作的成本是多少?
PS:我的问题与这个问题略有相关:锁定未锁定的互斥锁的效率如何?互斥锁的成本是多少?
但我正在寻找我的设计和理解原因的具体答案。
我正在使用 C 和 pthread 库。