多线程在TinyXMl中写入数据

时间:2012-09-04 02:00:22

标签: c++ boost-thread streamwriter

对于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。 谁能帮我?非常好! 强调文字

1 个答案:

答案 0 :(得分:1)

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

  

unique_lock(可锁定&amp; m)

     

效果:

     

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

此外,请使用boost::lock_guard,除非您想延迟获取锁定。有关详细信息,请参阅documentation