From: Graham Menhennitt Date: 2013-07-15T16:53:10+09:00 Subject: closing a socket while another thread is in an IO.select() call on it Hello Rubyists, I have a program that opens a TCPSocket, connects it to a server, and then creates a thread which loops until the socket closes, reading from the socket and processing the data read. It calls IO.select() to wait until there is data available to read. Meanwhile, another thread can close the socket in certain circumstances. If the first thread is in IO.select() when the socket is closed, the result is unpredictable - sometimes the select() returns and sometimes it blocks. I'm not sure of the circumstances that cause it to block or not - it seems random. So, is there some way to make it reliably unblock? Or is there something that the second thread can do to cause the select() to return (set a flag on the socket before closing it, or something)? This is with Ruby 2.0.0 p247 on Centos 5 Linux if that's significant. Thanks in advance for any suggestions. Graham