On Jul 16, 2:22 pm, Maxim Khitrov <mkhit...@gmail.com> wrote: > On Thu, Jul 16, 2009 at 5:00 PM, Carl Banks<pavlovevide...@gmail.com> wrote: > > On Jul 16, 8:12 am, Gabriel Rossetti <gabriel.rosse...@arimaz.com> > > wrote: > >> Hello everyone, > > >> I am using threading.Condition.wait(timeout) and was surprised to see > >> that there is no return value nor an exception when wait() is used w/ a > >> timeout. How am I supposed to know if it was notified or if it timed out? > > > That's a good question. Condition.wait seems to violate an invariant > > if it can return without having acquired the underlying lock. And if > > it does the least it could do is to return a status so you know if you > > have to skeddadle. > > > Workaround is to use the _is_owned() method of Condition to see if you > > are the owner of the condition, but this method is undocumented. > > > cond = Condition() > > ... > > cond.acquire() > > while not ok_to_proceed(): > > cond.wait() > > if not cond._is_owned(): > > # must've timed out > > raise TimeOutException > > operate() > > cond.release() > > You will always be the owner of the condition whether it times out or > your thread is notified. This doesn't solve the problem.
You are correct, I misread the code. So scratch what I said. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list