checker has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: waking from select, or IO::Pipe in same process?
by ikegami (Patriarch) on Jul 13, 2011 at 18:11 UTC | |
by checker (Novice) on Jul 15, 2011 at 03:45 UTC | |
by ikegami (Patriarch) on Jul 15, 2011 at 18:09 UTC | |
by checker (Novice) on Jul 15, 2011 at 18:51 UTC | |
by ikegami (Patriarch) on Jul 15, 2011 at 19:03 UTC |