对于TinyXML来说是一个很好的XMl库,我用它来保存网络传输中的数据包数据,比如客户端以UDP muticast模式从服务器接收一些数据包。客户端加入多个muticast组,因此必须创建多线程来接收和写入不同文件中的数据(当然,文件的数量等于muticast组的数量)。 我设计了一个具有DoWrite(char *,size_t)函数的writeXML类。
如:
void DoWrite(char*,size_t)
{
boost::unique_lock<boost::mutex> lLock(m_lock);
lLock.lock();
}
但问题是每当调用DoWrite函数时,都会出现boost:lock_error。 谁能帮我?非常好! 强调文字
答案 0 :(得分:1)
从您的代码中删除lLock.lock();
,为您传递互联网上的boost::unique_lock
来电lock
,因此您无需手动调用它(您在互斥锁上调用了两次锁定)。来自参考文献:
unique_lock(可锁定&amp; m)
效果:
存储对m的引用。 调用m.lock()。
此外,请使用boost::lock_guard
,除非您想延迟获取锁定。有关详细信息,请参阅documentation。