sleep()の実験をする専用のプログラム(UNIX:C言語)を作って試してみたところ、sleep(),usleep()の一時停止対象はプロセスでなくスレッドだった(汗)
おかしいなーと思ってマニュアルを見直したら、「man sleep」で表示されたのはセクション3F(FORTRAN)でやんの!(爆) うあー、ダメダメだぁ(泣)
改めてセクション3C(C言語)のsleep()を見てみると、先頭の方には「プロセスを止める」と書いてあるが、末尾の方に注意書きで「マルチスレッドの場合はnanosleep()で実装される」とあった。
usleep()の方は「呼出元を止める」としか書かれておらず、プロセスかスレッドかはっきりしないが、末尾の注意書きにはsleep()と同じことが書かれていた。
でnanosleep()を見ると、「カレントスレッドを止める」とばっちり書かれている!
…うー、昨日のselect()の調査は(本来の趣旨からは)意味無かったー(嘆)
しかしそうすると、当初のsleep()でうまくいかなかったのは何故だったんだろうなぁ? 何か見逃しがあって失敗したんだろうか。(他人のテストを横から見てたのが実態なので、細かい点は不明)