线程同步问题
说明:比较通用的模型,输入和输出队列,线程不停的从输入数据取数据放到输出队列里,类的用户不断的向这个类添加数据,以及获取数据。添加数据以及获取数据不在一个线程。Over~
可以想象如下伪代码
class server
{
queue i;
queue o;
thread()
{
o = process(i);
}
addbuffer();
getbuffer();
}
thread client1()
{
addbuffer();
}
thread client2()
{
getbuffer();
}
}
两个队列实际声明如下:
std::map<Role, std::deque<BufferStamped>> m_iBuffer;
std::map<Role, std::deque<BufferStamped>> m_oBuffer;
我在线程以及addbuffer,getbuffer加了个锁,结果导致死锁了。
应该如何线程同步呢?
ps。或者是通过线程发送消息的方式规避线程同步问题?添加数据好说,但是而用户程序向线程发送消息获取线程维护的数据似乎很难办,发送消息获取数据无法立即返回。