Concurrency and parallelism
CP.50
Определите `mutex` вместе с данными, которые он охраняет. Используйте `synchronized_value<T>`, где это возможно
Причина
Для читателя должно быть очевидно, что данные должны быть защищены и как. Это снижает вероятность блокировки неправильного mutex или неблокировки mutex.
Использование synchronized_value<T> гарантирует, что данные имеют mutex, и правильный mutex блокируется при доступе к данным. См. предложение WG21 добавить synchronized_value в будущий TS или пересмотр стандарта C++.
Пример
struct Record {
std::mutex m; // возьмите этот mutex перед доступом к другим членам
// ...
};
class MyClass {
struct DataRecord {
// ...
};
synchronized_value<DataRecord> data; // Защитить данные с помощью mutex
};
Применение
??? Возможно?
CP.coro: Корутины
Этот раздел сосредоточен на использовании корутин.
Резюме правил корутин: