[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12455] Re: Thread yield() の実 装( Re: 「 Java Concurrency in Practice 」を読 む会 第 2 回議事録)



高橋(徹)です。

#12月の会場は抽選外れてしまいました。

   ""TAKAHASHI, Tomohiro" <t_takahashi@xxxxxxxxxxxxxx>"さんは書きました:
> > Threadクラスのyieldはnativeメソッドでした。
> > 簡潔に書くと、デフォルトの実装は
> >  Linuxでは、POSIX.1bのsched_yield()を呼び出します。
> >  Solarisでは、Solaris OSのシステムコール thr_yield()を呼び出します。
> >  Windowsでは、Win32 APIのSwitchToThreadを呼び出します。
> > 
> > ただ、設定によってはsleepを呼び出すようになっています。
> 
>   この設定というのが気になりますが、どのような設定なのでしょうか? JVMのパラメータ?

少し正確に記述します。
Thread.yieldが呼ばれると、条件によって下記のいずれかの処理となります。
(1)なにもせずただreturnする
(2)os::sleepを呼び出す
(3)os::yieldを呼び出す

(1)は、コマンドオプションで-XX:+DontYieldALotを指定したときの処理です。
(2)は、コマンドオプションで-XX:+ConvertYieldToSleepを指定したときの処理です。
(3)は、それ以外のときの処理です。


--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx