для 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.
кто может мне помочь? ТКС очень много! выделенный текст
Удалить lLock.lock();
из вашего кода, boost::unique_lock
звонки lock
на переданный в мьютекс для вас, так что вам не нужно вызывать его вручную (вы дважды вызываете блокировку на мьютексе). Из ссылки:
unique_lock (Lockable & м)
Последствия:
Хранит ссылку на м. Вызывает m.lock ().
Также используйте boost::lock_guard
вместо этого, если вы не хотите отложить получение блокировки. Увидеть документация Больше подробностей.
Других решений пока нет …