17.2 同期変数

17.2 同期変数

同期化された変数(あるいは縮めて、同期変数)は変数の読み出しと設定用に、get と put 操作を提供します。get 操作は、変数が定義されるまでブロックします。unset 操作は、変数を未定義状態にリセットします。

次は同期変数の標準的な実装です。

package scala.concurrent class SyncVar[A] { private var isDefined: Boolean = false private var value: A = _ def get = synchronized { while (!isDefined) wait() value } def set(x: A) = synchronized { value = x; isDefined = true; notifyAll() } def isSet: Boolean = synchronized { isDefined } def unset = synchronized { isDefined = false } }