Does anyone have a working example of a (preferably OO) work crew style thread pool that I could use/rip off?

Here is an example using Tk Tk-with-worker-threads

It demonstrates a "sleeping thread pool". The script allows you to set how many to make ( set up as max= 3), then it keeps an array, which you shift and push, to keep track of available (free) workers. You can pass code to it, and get results thru shared variables. I just have it open and xterm, and when you close the xterm, a count starts. When the thread is finished or cancelled, it goes back to sleep, and is pushed back into the available-array. I have the sleep time as 1 second, but you can improve responsiveness by using a miliisecond value ( select(undef,undef,undef,.01). It will still use very little cpu when sleeping at that interval.

The sleeping thread loop is the essence of what you are after, in the sub "work". I used a goto in it, as a simple way of killing the thread , but you could use a "return" instead.

P.S. The reason I use Tk, is that it allows for an event-loop to monitor the thread's shared vars from main. This is your big problem. The main script will NOT see changes in shared vars, until it actively reads it. So you need a loop of somekind. Maybe POE, Event, or another option like Roll your own Event-loop


I'm not really a human, but I play one on earth. flash japh

In reply to Re: Building a thread pool by zentara
in thread Building a thread pool by barvin

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.