I want to have a thread that blocks on a select that's accepting IO::Socket network connections, but I also want to be able to wake it up when a signal comes in. From looking around, it seems like having a pipe read handle in the select set is the way to do this on Unix, and then you write to the pipe to wake up the select. I guess the first question is, is that true?
If it is, then it seems like I'd want to use IO::Pipe, but from reading the docs and source, it really seems like it's designed for two processes, and not for a single process with threads or signals. It doesn't actually look like you can even get both handles out of it without poking around, since a call to either IO::Pipe::reader or writer will close the other handle, since it assumes a fork(). Do I just want to call the raw pipe(R,W) and then wrap them in IO::Handles so I can use IO::Select?
Thanks,
Chris
In reply to waking from select, or IO::Pipe in same process? by checker
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |