C ++ блокировка между методамиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++ блокировка между методами

Сообщение Anonymous »

У меня есть структура данных, которая не безопасна потоком. Несколько потоков читают и записывают эту структуру данных в 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()
на нем?

Подробнее здесь: https://stackoverflow.com/questions/386 ... ss-methods
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»