Spec-Zone.ru › D

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API