The $readHandle is defined in the parent, not the child. The child is reading from STDIN, so I don't believe this will work, and in my testing, it did not.
I do, however, have a workaround. I set the timeout to 0 based on your advice and put a very small delay at the end of the "infinite" loop:
while(time < $endTime) { [...] select(undef, undef, undef, 0.05); }
Since I could not get blocking to work no matter what I tried (which may still be some fault of my own), this seems to be a workable fix for now. It reduced CPU to almost nothing, which is an enormous gain since the load was consistently over 80 on the box where this was running multiple instances.
I will continue to modify my test code to see if I can implement your suggestions more effectively. Your help has been invaluable in at least finding a workaround and possibly a permanent solution, jethro, and I really appreciate your time
In reply to Re^6: Performance and CPU load: sysread, IO::Select and/or Storable::thaw
by DBX
in thread Performance and CPU load: sysread, IO::Select and/or Storable::thaw
by DBX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |