Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hello PerlMonks,

I like the usage of perl Queue. I have few questions.

1. How can I send a signal from child threads to parent,saying I am done with a piece of work. In my case parent queing 20 groupid's to the Q, and child threads picks up each group and work on it..I want a thread to sends back the groupid back to the parent so that parent know that group processing is done.

2. Also I want a child thread to quit working on a group if it encounters some error. I just want the thread to report the error, quit that group and picks up another groupid from the Q. Is that something possible in perl threads?

3. Anyway to check the remaining elements in a Q?

Thanks,
Jim

Replies are listed 'Best First'.
Re^3: MultiThreaded Program in perl
by BrowserUk (Patriarch) on Nov 15, 2010 at 22:52 UTC
    1. How can I send a signal from child threads to parent,saying I am done with a piece of work. In my case parent queing 20 groupid's to the Q, and child threads picks up each group and work on it..I want a thread to sends back the groupid back to the parent so that parent know that group processing is done.

    Use a second queue. See Re^7: Win32::Process output for an example.

    2. Also I want a child thread to quit working on a group if it encounters some error. I just want the thread to report the error, quit that group and picks up another groupid from the Q. Is that something possible in perl threads?

    Do exactly that. Report the error--either to the screen, or a file, or back to the main thread via the second queue above, and loop back and read the next workitem from the queue.

    3. Anyway to check the remaining elements in a Q?

    Read the documentation for Thread::Queue. (Hint: It starts with p and ends with 'ending' (which is a very good place to end :)


    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.