core.sync.barrier
Модуль барьера обеспечивает примитив для синхронизации прогресса группы потоков.
- Лицензия:
- Boost License 1.0
- Авторы:
- Sean Kelly
- Источник
- core/sync/barrier.d
- class Barrier;
-
Этот класс представляет собой барьер, через который потоки могут проходить только группами определенного размера.
- Примеры:
-
import core.thread; int numThreads = 10; auto barrier = new Barrier( numThreads ); auto synInfo = new Object; int numReady = 0; int numPassed = 0; void threadFn() { synchronized( synInfo ) { ++numReady; } barrier.wait(); synchronized( synInfo ) { ++numPassed; } } auto group = new ThreadGroup; for ( int i = 0; i < numThreads; ++i ) { group.create( &threadFn ); } group.joinAll(); assert( numReady == numThreads && numPassed == numThreads );
- this(uint limit);
-
Инициализирует объект барьера, который выпускает потоки группами заданного размера.
- Параметры:
uint limitКоличество ожидающих потоков, которые будут выпущены одновременно.
- Исключения:
- SyncError при ошибке.
- void wait();
-
Ожидание определённого числа потоков, после чего происходит продолжение.
- Исключения:
- SyncError при ошибке.
© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/core_sync_barrier.html