英語版
このページの英語版を見る

core.sync.barrier

バリアモジュールは、スレッド群の進行を同期させるためのプリミティブを提供する。 プリミティブを提供する。
Authors:
Sean Kelly
class Barrier;
このクラスは、スレッドが特定のサイズのグループでのみ移動できる グループでのみ移動できるバリアを表す。
Examples:
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);
バリアオブジェクトを初期化する。 のグループでスレッドを解放するバリアオブジェクトを初期化する。
Parameters:
uint limit 解放待ちスレッドの数を指定する。
Throws:
エラー時にSyncError。
void wait();
あらかじめ決められたスレッド数を待ってから処理を進める。
Throws:
エラー時にSyncError。