Inter-Thread Communication

Werner Schiendl ws-news at gmx.at
Thu Nov 15 18:32:39 CET 2001


Hi,

I think you can use the Queue module.
You than have a queue for each separate communication path.
The locking is built into the queue.

hth
Werner

"Dale Strickland-Clark" <dale at riverhall.NOTHANKS.co.uk> wrote in message
news:4go7vtc8dqm8qsfq8ttv95bopidscj56l2 at 4ax.com...
> I have a master thread and a number of subordinate threads. They all
> need to communicate between each other synchronously - in an OS
> independent way.
>
> A typical exchange might be:
>
> T-A waits for a message from somewhere.
> T-B sends T-A a message about an event and waits for a response.
> T-A deals with the event and sends a response to T-B.
> T-A waits for another message.
>
> Pretty standard stuff, I would have thought. However, I can't see a
> tidy way of doing this in Python that doesn't involve three locks:
>
> The three locks, all of type threading.Lock, are:
>
> Message - global
> Post - global
> Response - local to thread
>
>  1. T-A acquires Message lock
>  2. T-B acquires Response lock.
>  3. T-A tries to acquires Message lock - blocking
>  4. T-B wants to post a message so acquires Post lock - blocking.
>  5. T-B get's Post lock and stores message details.
>  6. T-B releases Message lock - waking T-A.
>  7. T-B tries to acquire Response lock - blocking
>  8. T-A get's Message lock, handles message and stores response.
>  9. T-A releases Response lock - waking T-B
> 10. T-A releases Post lock ready for another thread
> 11. continue from 2
>
> This seems awfully fussy to me. Is there an easier way?
> --
> Dale Strickland-Clark
> Riverhall Systems Ltd





More information about the Python-list mailing list