pthread_mutex_lock并解锁

Ten*_*nev -1 c++ mutex pthreads

我有两个线程,它们运行非常快,我的pthread_mutex_lock使用和调用pthread_mutex_unlock进入全球(externed变量)数据

问题是我的应用程序需要大约15-20%的CPU在Ubuntu Linux上运行,

相同的代码,但与EnterCriticalSection的和LeaveCriticalSection和运行在Windows上使用的CPU的1-2%

Nik*_*sov 7

实际上这可能是件好事 - 花在等待上的时间更少,更多的时间来处理数据.

CPU百分比计算在不同的OS上非常不同.尝试测量吞吐量 - 您可以在一个单位时间内处理多少"工作项".

减少锁争用的一种可能途径(如果这确实是您的问题)是将生产者和消费者线程与队列连接起来.将新项目链接到队列尾部很快,对于从队列头部取消链接是相同的 - 一对指针操作.STL甚至有一堆可以使用(集装箱std::deque,std::queue,std::list).你必须提供自己的锁定.或者研究英特尔线程构建模块.