> ちなみに,POSIX や Windows だと,close しちゃうと他の待っているスレッ
> ドに対してどういう挙動になるんでしょう.

POSIXはちゃんと調べてないのですが、Linuxにおいてclose時にcloseプロセス内の
別スレッドは起床されませんねぇ(されない時がありますねぇ、が適切か)。
何回か議論されているんですが、マルチスレッドプログラムはスレッド間の排他は
ユーザランドの責任だろって結論。Linusがよく例に出すのは

thr1-open -> thr1-poll -> rhr2-close

が起こりうる構造なら

thr1-open -> rhr2-close -> thr2-open -> thr1-poll

でたまたまfd番号が同じだけの全然違うfdに対してwaitを始めてしまうのでなんの意味もない。
全スレッドファイルが不要になってから閉じなきゃ動かないのがPOSIXくおりてぃ。

なので、起こしても起こさなくても、ある種の紳士協定をスクリプトに押しつける事になるので仕様の明確化と
ドキュメンテーションどこに書こうか議論が必要な気もしなくもないですねぇ

> 近永さんの日記
>
>> Socket からの読み込みでブロック中に他のスレッドでその Socket を close
> した時に例外が発生せずに待ってしまう不具合
>
> を読むと,待っちゃうんでしょうか.他のインタプリタではどう処理してるんだ
> ろう?

軽く調べた感じだと、なんにもしてないような気がしますねぇ・・