Я провел эксперименты с boost :: upgrade_to_unique_lock / unique_lock && boost :: shared_lock, сценарий:
1 поток записи, где он имеет boost :: unique_lock, существующий с boost:: shared_mutex, в потоке я пишу в глобальный AClass
3 поток чтения, каждый из них имеет boost :: shared_lock с таким же бустом:; shrared_mutex,у них есть цикл для чтения глобальной AClass
Я заметил, что все потоки удерживают блокировки (1 уникальная, 3 общих) одновременно, и все онивыполнение циклов доступа к данным.
меня беспокоит AClass не поточно-ориентированный, если я могу одновременно выполнять чтение / запись в разных потоках, чтение может привести к сбою.Даже если это не AClass, мы используем примитивные типы, их чтение, безусловно, не приведет к сбою, но данные могут быть грязными, не так ли?