From: KOSAKI Motohiro Date: 2011-03-05T17:36:43+09:00 Subject: [ruby-core:35428] Re: [Ruby 1.9 - Bug #4463][Open] [PATCH] release GVL for fcntl() for operations that may block Hi >> I've commited slightly modified version today (r31025). >> The difference is, >> >> 1) All IO.fcntl() and IO.iocntl() relese GVL instead only SETLCKW. because, >> � � A) if a user are using network filesystem, almost all fcntl need network >> � � � � communication. iow, they can be blocked. >> � � B) We are sure ioctl() has similar issue. But, we don't have any knowledge >> � � � � which ioctl can be blocked. It is strongly dependend a >> platform and a device. > > Agreed on both points. thank you. > >> 2) Added small test. It is based on your Fcntl::Flock patch. > > Any chance of that patch making it into trunk? �I'd be happy to make > any changes/improvements necessary (+docs, too). �Thanks again. Umm.. I don't like its interface so much. your flock object don't mange any lock state. it's merely wrapper of argument of fcntl. your interface mean we need two line every lock operation. eg. lock = Fcntl::Flock.new Fcntl::F_WRLCK f.fcntl Fcntl::F_SETLKW, lock but I *personally* prefer array or hash capsulation. e.g f.fcntl Fcntl:F_SETLKW, [Fcntl:F_WRLK, SEEK_SET, 0, 0] or f.fcntl Fcntl:F_SETLKW, { :l_type => Fcntl:F_WRLK } But, of cource, I'm not against if matz ack yours. So I recommend you describe the detailed interface to matz instead only just attached a patch. It's best practice to persuade _very_ busy person. :)