インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
キーワード名は _Cilk_sync です。 ヘッダーファイル <cilk/cilk.h> には簡易版のキーワード (cilk_sync) を利用するためのマクロが定義されています。 ここでは、cilk.h で定義されている名前を使用します。
cilk_sync 文は、現在の関数はスポーンされた子タスクが完了するまで現在の位置で待機することを指示します。 すべての子タスクが完了すると、現在の関数は処理を続行できます。
構文は、次のとおりです。
cilk_sync;
cilk_sync では、現在の関数がスポーンした子タスクのみを同期します。ほかの関数からスポーンされた子タスクには影響しません。
すべての関数や cilk_spawn を含む try ブロックの終端には暗黙の cilk_sync が隠されています。 次の理由により sync が必要です。
プログラムの並列性に伴って、プログラムのリソース使用量が必要以上に大きくならないようにします。
データ競合のない並列プログラムの動作が、対応するシリアルプログラムと同じになるようにします。呼び出された関数内部でほかの関数をスポーンするかどうかにかかわらず、通常の関数呼び出しの動作と同じになるようにします。
ストランドの実行が現在の関数に影響を及ぼさず、リソースの解放に失敗しないようにします。
呼び出された関数が、すべての処理を完了してから戻るようにします。
暗黙の cilk_sync はデストラクターが呼び出された後に 起こります。