インテル® C++ コンパイラー 15.0 ユーザー・リファレンス・ガイド

omp cancel

指定した種類の最内領域の取り消し要求を行います。このプラグマに到達したタスクは、取り消された構文の最後に進みます。

構文

#pragma omp cancel [construct-clause[if(expr)]

structured-block

引数

construct-clause

次のいずれか: parallelsectionsfortaskgroup

if (expression)

条件文を指定します。

expression は TRUE または FALSE のスカラー論理式です。 expression が FALSE の場合、CANCEL 構文は取り消し要求を行いません。

説明

CANCEL 構文は、指定した種類の最内領域の取り消し要求を行います。このプラグマに到達した暗黙的および明示的なタスクは、取り消された構文の最後に進みます。

取り消しポイントは次の場所で暗黙的に指定されます。

上記のいずれかの取り消しポイントに到達したスレッドは、取り消しポイントがアクティブな場合、直ちに取り消しがあったかどうかをチェックし、取り消しがあった場合はその領域の取り消しを行います。

CANCEL 構文によりタスクの取り消しが要求されると、最内の TASKGROUP が取り消されます。 CANCEL TASKGROUP 構文に到達したタスクは、その TASK 領域の最後にジャンプします。最内 TASKGROUP のタスクですでに実行を開始しているものは、終了まで実行するか、取り消しポイントに到達するまで実行しなければなりません。 取り消しポイントに到達すると、取り消し要求があった場合、タスクは TASK 領域の最後にジャンプし、完了したと見なされます。 最内 TASKGROUPTASK でまだ実行を開始していないものは破棄され、完了したと見なされます。

PARALLEL 領域の取り消しが発生すると、各バインドスレッドは取り消された領域の最後から実行を再開し、TASK 構造により作成されたタスクとそのすべての子孫は TASKGROUP の取り消しセマンティクスに従って取り消されます。

FOR または SECTIONS 領域の取り消しが発生すると、各バインドスレッドは取り消された領域の最後から実行を再開しますが、タスクの取り消しは行われません。

expression は TRUE または FALSE のスカラー論理式です。expression が FALSE の場合、CANCEL 構文は取り消し要求を行いません。

制約事項

関連情報


このヘルプトピックについてのフィードバックを送信