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

OK, thank you very much jethro and BrowserUk! But I have the last question. BrowserUk, why did you use "threads qw yield ;" and never used the yield() function? What effect is this have?
  • Comment on Re^4: Perl && threads && queues - how to make all this work together

Replies are listed 'Best First'.
Re^5: Perl && threads && queues - how to make all this work together
by BrowserUk (Patriarch) on Feb 12, 2010 at 18:08 UTC
    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.