hotspot/src/share/vm/runtime/mutex.cpp
static int ParkCommon (ParkEvent * ev, jlong timo) {
{- -------------------------------------------
(1) 引数で指定されたタイムアウト時間(以下の timo)を微修正する.
(NativeMonitorTimeout オプションに 0 より大きい値がセットされており, かつ
引数の timo が NativeMonitorTimeout を超えているかもしくは 0 以下の場合には,
引数の timo の代わりに NativeMonitorTimeout の値を timo として用いる.)
---------------------------------------- -}
// Diagnostic support - periodically unwedge blocked threads
intx nmt = NativeMonitorTimeout ;
if (nmt > 0 && (nmt < timo || timo <= 0)) {
timo = nmt ;
}
{- -------------------------------------------
(1) os::PlatformEvent::park() を呼び出して眠りにつく.
眠りから覚めたら結果をリターン.
なお, タイムアウト時間が指定されているかどうかに応じて, 呼び出し先や結果が少し変わる.
* タイムアウト時間が指定されていない場合 (= timo が 0 の場合):
os::PlatformEvent::park() を呼び出す.
この場合の結果は, 常に OS_OK.
* タイムアウト時間が指定されている場合 (= timo が 0 ではない場合):
os::PlatformEvent::park(jlong millis) を呼び出す
この場合の結果は, os::PlatformEvent::park(jlong millis) の返値.
---------------------------------------- -}
int err = OS_OK ;
if (0 == timo) {
ev->park() ;
} else {
err = ev->park(timo) ;
}
return err ;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.