We've seen it block on the line
string s=::read(8192,1);
in __stdio_read_callback.
So you mean the only situation when that can happen is if some other thread has managed to make a read before it? Then the real problem is probably that the read doesn't take place on the C level while the interpreter lock is held. What about moving all the stuff done in the pike level callbacks into Stdio.Fd, so that we can do away with them completely?
/ Martin Stjernholm, Roxen IS
Previous text:
2003-03-19 14:16: Subject: I/O callbacks in blocking mode
Hm? read() never blocks when data is available. Even on blocking sockets.
/ Per Hedbor ()