From: SASADA Koichi Date: 2011-06-10T22:29:08+09:00 Subject: [ruby-dev:43698] Re: [ruby-changes:18827] Ruby:r30852 (trunk): * thread.c (rb_thread_io_blocking_region): new function to run  ささだです.  下記の件,見事にスルーされていますが,せめてこれを include/ruby/intern.h から外して,もう少し議論させてもらえませんか.この API は,どうにも許せない感じです. (2011/02/13 3:49), SASADA Koichi wrote: >  ささだです. > > http://d.hatena.ne.jp/nagachika/20110212/ruby_trunk_changes_30843_30852 > で変更を知りました. > > (2011/02/12 14:44), nobu wrote: >> Index: include/ruby/intern.h >> =================================================================== >> --- include/ruby/intern.h (revision 30851) >> +++ include/ruby/intern.h (revision 30852) >> @@ -797,6 +797,7 @@ >> int rb_thread_interrupted(VALUE thval); >> VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1, >> rb_unblock_function_t *ubf, void *data2); >> +VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd); >> #define RUBY_UBF_IO ((rb_unblock_function_t *)-1) >> #define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1) >> VALUE rb_mutex_new(void); > >  新設された API (rb_thread_io_blocking_region) について質問です.背景 > や,細かい実装を見ていないで質問します.すみません. > > - ubf 無くて良いの? > - fd って1個だけなの? > >  というか,このレイヤでこの処理(close したとき,別のスレッドに例外を発 > 生させるための前処理)を wrap するのは筋が悪いように思うのですが.せめ > て,blocking_region なんて名前はやめたほうが. > >  ちなみに,POSIX や Windows だと,close しちゃうと他の待っているスレッ > ドに対してどういう挙動になるんでしょう. > >  近永さんの日記 > >> Socket からの読み込みでブロック中に他のスレッドでその Socket を close > した時に例外が発生せずに待ってしまう不具合 > > を読むと,待っちゃうんでしょうか.他のインタプリタではどう処理してるんだ > ろう? > >  すでに,ruby-core で議論済みでしたらすみません(未読が 963 通...). > -- // SASADA Koichi at atdot dot net