Can someone explain to me why this doesn't work?
The output I get is:Code:import e32 def task1(): print "[task1] waiting" lock.wait() print "[task1] revived" lock = e32.Ao_lock() e32.ao_sleep(0, task1) print "[main] sleeping" e32.ao_sleep(1) print "[main] signalling" lock.signal() print "[main] done"
and then it hangs. ao_sleep(1) never returns.Code:[main] sleeping [task1] waiting
But this does work, and I don't know why:
Here, the output is:Code:import e32 def task1(): print "[task1] waiting" lock.wait() print "[task1] revived" lock = e32.Ao_lock() e32.ao_sleep(0, task1) print "[main] sleeping" def signal(): print "[main] signalling" lock.signal() e32.ao_sleep(1, signal) e32.ao_sleep(1) print "[main] done"
and the program exits gracefully.Code:[main] sleeping [task1] waiting [main] signalling [task1] revived [main] done
Thanks in advance.

Reply With Quote

