은 좋은 XMl 라이브러리입니다. 클라이언트가 UDP 멀티 캐스트 모드로 서버로부터 패킷을 수신하는 등의 네트워크 전송에서 패킷 데이터를 저장하는 데 사용합니다. 클라이언트는 하나 이상의 muticast 그룹에 참여하기 때문에 서로 다른 파일에 데이터를주고받는 다중 스레드를 만들어야합니다 (물론 파일 수는 muticast 그룹의 num과 같습니다). DoWrite (char *, size_t) 함수가있는 writeXML 클래스를 디자인합니다.멀티 스레드 TinyXMl의 데이터 쓰기 TinyXML의
같은 :
void DoWrite(char*,size_t)
{
boost::unique_lock<boost::mutex> lLock(m_lock);
lLock.lock();
}
하지만 문제는 DoWrite 함수가 호출 될 때마다, 부스트는 다음과 같습니다 lock_error가 제공됩니다. 누가 나를 도울 수 있습니까? 아주 많이! 당신이 (당신이 뮤텍스에 두 번 잠금을 요구하고있다)를 수동으로 호출 할 필요가 없습니다 는 boost::unique_lock
통화 당신을위한 뮤텍스 전달에 lock
, 사용자 코드에서 텍스트
오류에 대한 질문을 게시하는 경우 항상 질문에 오류를 포함시켜야합니다. 오류를 포함하도록 질문을 편집하십시오. –
그러나, 나는 변수'm_lock'이 정의되어 있지 않다고 추측합니다. 'DoWrite'는 독립 실행 형 함수이고'm_lock'은 클래스 멤버에게 전형적인 방식으로 명명됩니다. 클래스 지정자를 잊어 버렸거나 클래스에서 인라인 인 경우에는 조금 더 잘 보여줘야합니다. –