Все следуетупрощать до тех пор,
пока это возможно, но не более того.
-А. Эйнштейн
Введение Задания и потоки
Передача аргументов |
|
Возврат результатов |
|
Совместное использование данных |
Ожидание событий |
|
Обмен информацией |
с заданиями |
future И promise |
|
packaged_task async() + Советы
вариант того, что использовалось в С++ более поддерживается современным оборудованием.
20 лет и почти повсеместно Поддержка стандартной би
более одного задания. |
|
|
Основополагающим |
элементом решения этой задачи является |
(mutua\ exc\usion object - |
объект взаимоисключения, мьютекс). |
mutex |
m; |
|
int |
sh; |
|
void |
f |
() |
|
{ |
|
|
|
|
scoped_lock |
|
sh |
+= |
7; |
// |
УправляЮllQ-fй мьютекс |
|
// |
Совместно используемые данные |
|
// |
Захват |
мьютекса |
|
/ / |
Работа |
с совместно используемыми |
данными |
// |
Неявное |
освобождение мьютекса |
|
m. unlock ()).Когда |
мьютекс освобождается, потоки, ожидающие его, возоб |
новляют выполнение |
("пробуждаются"). Средства взаимного исключения и |
Обратите внимание дескрипторы ресурсов,
на использование идиомы
такие как scoped_lock и
RAII (§5.3). Использовать
unique_lock (§15.6), про
{ puЫic: mutex rm; 11 ...