我有一个函数pushMessage()
。C++中的并发效率
void pushMessage(const char* msg, const int len)
{
for (int i=0;i<len;++i)
queue.push(*(msg+i))
}
有问题的队列是一个tbb::concurrent_bounded_queue<char>
,有一个真正的大尺寸(假设为无穷大)。
这个函数被两个线程调用。一个线程不断调用函数,另一个线程偶尔调用函数。
什么是确保队列内容没有混合并发msg
的最有效方法?我的第一个电话是使用互斥锁,但是我想听到更多,因为我对并发的世界相当陌生,我宁愿不跳到我学习的第一件事情上。非常感激。
P.S. - 我可以访问Boost和TBB库。
编辑:该队列是char类型,因为它用于速度逐字节发送消息。之前的实现是一次发送整个消息。
这是读写器问题还是写作者问题? – DumbCoder
作家写作。两个线程都写入队列。 –
'为了速度'是什么意思?在这个实现中它会变得更慢**。 – SergeyA