0

因为 TinyXML 是一个很好的 XMl 库,我用它来保存网络传输中的数据包数据,例如客户端以 UDP 多播模式从服务器接收一些数据包。客户端加入多个组播组,因此必须创建多线程来接收和写入不同文件中的数据(当然,文件的数量等于组播组的数量)。我设计了一个具有 DoWrite(char*,size_t) 函数的 writeXML 类。

如 :

void DoWrite(char*,size_t)
{
boost::unique_lock<boost::mutex> lLock(m_lock);
lLock.lock();
}

但问题是每当调用 DoWrite 函数时,都会出现 boost:lock_error 。谁能帮我?非常感谢!强调文本

4

1 回答 1

1

lLock.lock();从您的代码中删除,为您boost::unique_lock调用lock传入的互斥锁,因此您无需手动调用它(您在互斥锁上调用了两次 lock)。从参考:

unique_lock(可锁定 & m)

效果:

存储对 m 的引用。调用 m.lock()。

此外,boost::lock_guard除非您想推迟获取锁,否则请改用。有关更多详细信息,请参阅文档

于 2012-09-04T02:05:21.763 回答