10.2. バリア
バリアは、他のスレッのド同期方法と比較すると、非常に異なる方法で動作します。バリアは、すべてのスレッドとプロセスがこのバリアに到達するまで、すべてのアクティブなスレッドが停止するコード内のポイントを定義します。バリアは、実行中のアプリケーションが実行を続行する前にすべてのスレッドが特定のタスクを完了していることを確認する必要がある状況で使用されます。
リアルタイムのバリアミューテックスは、次の 2 つの変数を取ります。
-
最初の変数は、バリアの
stopとpassの状態を記録します。 - 2 番目の変数は、バリアに入るスレッドの総数を記録します。
バリアは、指定された数のスレッドが定義されたバリアに達したときにのみ pass するように状態を設定します。バリア状態が pass するように設定されると、スレッドとプロセスはさらに進みます。pthread_barrier_init() 関数は、定義されたバリアを使用するために必要なリソースを割り当て、attr 属性オブジェクトによって参照される属性でバリアを初期化します。
成功すると、pthread_barrier_init() 関数および pthread_barrier_destroy() 関数はゼロ値を返します。エラーの発生時に、エラー番号が返されます。