in reply to Re^4: Perl && threads && queues - how to make all this work together
in thread Perl && threads && queues - how to make all this work together

BrowserUk, why did you use "threads qw yield ;" and never used the yield() function?

I simply forgot to remove the reference. I had originally coded sleep 0.001 while $Q->pending;

As yield while $Q->pending;, but switched it because yield() can render to a very tight loop, which consumes large amount of cpu needlessly.

yield equates to sleep 0 which basically relinquishes the rest of the current timeslice. But, if no other thread (or process) is ready to run, it returns very quickly making for a cpu-sapping tight loop.

On my system, the above code with yield(), consumes 25% cpu. Ie. 100% of one core.

The same code with sleep 0.001 consumes so little cpu it gets measured as 0.00%, but it mokes no difference to the overall runtime of the program.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"I'd rather go naked than blow up my ass"