Многопоточная запись данных в TinyXMl

для 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.
кто может мне помочь? ТКС очень много! выделенный текст

0

Решение

Удалить lLock.lock(); из вашего кода, boost::unique_lock звонки lock на переданный в мьютекс для вас, так что вам не нужно вызывать его вручную (вы дважды вызываете блокировку на мьютексе). Из ссылки:

unique_lock (Lockable & м)

Последствия:

Хранит ссылку на м. Вызывает m.lock ().

Также используйте boost::lock_guard вместо этого, если вы не хотите отложить получение блокировки. Увидеть документация Больше подробностей.

1

Другие решения

Других решений пока нет …