op73418 at mail.telepac.pt
Tue Nov 16 13:56:10 CET 2004
Terry Carroll wrote:
> On Mon, 15 Nov 2004, Gonçalo Rodrigues wrote:
>>Terry Carroll wrote:
>>>What's the ordinary way of telling a thread that it's no longer needed?
>>Use the queue to pass an object that the thread can recognize as an
>>order to shut down.
> Okay, but that was one possibility I'd mentioned. The problem is where
> you have multiple consumer threads reading the Queue. Only the first
> consumer will get the magic shutdown object.
> What's the solution? Keep count of the number of consumer threads and
> enqueue one shutdown object per consumer? (Seems icky; there has to be a
> less smelly way.)
After I replied I went to sleep and the thread seems to have gained much
life -- my inbox has a lot of Re: Threads posts!.
I think it was Alan Munroe that talked of one solution - once a Thread
gets a shutdown event it pushes another into the queue and then proceeds
obediently and orderly to shutdown.
If you are ready to code just a little bit more, add one extra level of
indirection. Have all your Thread's waiting on their own private queue.
This way you can send messages to any Thread in particular. To organize
work among a bunch of these threads you can have an extra Thread that
acts like a post mail, it receives "packets of work" and distributes
them among the worker threads.
Queues are really wonderful and if you can shoehorn your thread
framework by using them you are saving yourself a lot of trouble.
With my best regards,
More information about the Tutor