T BlockingQueue<T>::pop( ) {
pthread_mutex_lock(&lock);
if (list.empty( )) {
pthread_cond_wait(&cond) ;
}
T temp = list.front( );
list.pop_front( );
pthread_mutex_unlock(&lock);
return temp;
}
以上是基于底层链表和pthreads的模板化并发阻塞队列定义的pop操作。我的问题:我们可以在哪些方面进一步优化此代码?
答案 0 :(得分:2)
并发处理看起来非常简单。您的底层容器是perf调整的最佳候选者。这真的是一个链表吗?如果你只做FIFO操作,deque
会更好。
编辑:另请参阅Anthony Williams(编写当前的Boost.Thread)here的示例代码,以获取提示和详细讨论。
答案 1 :(得分:0)
在您当前的解决方案中,您尝试通过进一步优化实现的具体问题是什么?