SYNC 文は、指定のオブジェクトの相互排除ロックを取得し、文のブロックを実行してロックを解放することで、文のブロックを重要なセクションとして指定します。
一般的なフォーマット
構文規則
- identifier-1 は参照タイプでなければなりません。
一般規則
- identifier-1 は、ロックするオブジェクトを指定します。通常、identifier-1 は、インスタンス変数を保護するのであれば SELF キーワードであり、静的変数を保護するのであれば (または所定のクラスの静的メソッドで重要なセクションが発生する場合は) タイプです。
- statement- block-1 は、重要なセクションの文を表します。
- オブジェクトをロックすると、同じ実行スレッドで実行するコードもそのロックを取得して解放できます。ただし、他のスレッドで実行するコードには該当せず、ロックが解放されるまでブロックされます。
例
次の例では、SYNC 文が重要な文のセットをロックします。
method-id Withdraw.
procedure division using by value amount as binary-long
returning ret as binary-long.
sync on self
if balance >= amount
display "In critical section"
compute balance = balance - amount
set ret to amount
else
display "In critical section"
set ret to 0
end-if
end-sync
end method.