TinyXMl中的多线程写入数据

Multi thread Writing data in TinyXMl

本文关键字:数据 多线程 TinyXMl      更新时间:2023-10-16

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

例如:

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

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

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

unique_lock(可锁定&m)

效果:

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

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