У меня есть структура данных, которая не безопасна потоком. Несколько потоков читают и записывают эту структуру данных в 2 методах. (Порядок вызовов довольно случайный) Мой подход к этой проблеме заключался в использовании уникального_ка, как показано ниже: < /p>
struct test {
void func1() {
boost::unique_lock lock(_mutex);
// modify data-structure
}
void func2() {
boost::unique_lock lock(_mutex);
// modify data-structure
}
boost::mutex _mutex;
}
< /code>
I, хотя с этим кодом только один поток за раз может получить доступ к данным, так как Mutex совместно используется по двум методам.
Но каким-то образом может программа запустить ошибку в структуре данных, которую я не могу воспроизвести в моих однопользованных тестовых сферах ... < /p>
Я должен использовать Boost :: уникальный_лок в обоих методах, а затем вызовите < /p>
lock()
unlock()
У меня есть структура данных, которая не безопасна потоком. Несколько потоков читают и записывают эту структуру данных в 2 методах. (Порядок вызовов довольно случайный) Мой подход к этой проблеме заключался в использовании уникального_ка, как показано ниже: < /p> [code]struct test {
boost::mutex _mutex; } < /code> I, хотя с этим кодом только один поток за раз может получить доступ к данным, так как Mutex совместно используется по двум методам.
Но каким-то образом может программа запустить ошибку в структуре данных, которую я не могу воспроизвести в моих однопользованных тестовых сферах ... < /p> Я должен использовать Boost :: уникальный_лок в обоих методах, а затем вызовите < /p> lock() unlock() [/code] на нем?