Problem with multithreading

Jeffrey Barish jeff_barish at earthlink.net
Wed Jun 24 17:06:27 EDT 2009


I have a program that uses multithreading to monitor two loops.  When
something happens in loop1, it sends a message to loop2 to have it execute
a command.  loop2 might have to return a result.  If it does, it puts the
result in a queue.  loop1, meanwhile, would have blocked waiting for
something to appear in the queue.  The program works for a while, but
eventually freezes.  I know that freezing is a sign of deadlock.  However,
I put in print statements to localize the problem and discovered something
weird.  The freeze always occurs at a point in the code with the following
statements:

print "about to try"
try:
    print "in try"
    <do something>

I get "about to try", but not "in try".  Is this observation consistent with
the deadlock theory?  If not, what could be making the program freeze at
the try statement?  I wrote a test program using the same techniques to
illustrate the problem, but the test program works perfectly.  I could post
it, though, if it would help to understand what I am doing -- and what
might be wrong in the real program.
-- 
Jeffrey Barish




More information about the Python-list mailing list