Ah thanks, found it. The point is the behavioral difference between 
`return` and `raise Return`:
https://bitbucket.org/haypo/trollius/commits/df66a7c049001971c6abd27ed8a784bbdcf1ce26

On Tuesday, January 7, 2014 11:11:58 PM UTC+1, Guido van Rossum wrote:
>
> Well, at that point all three coroutines are blocked in wait(), and 
> (per condition variable specs) wait() releases the lock. I haven't 
> looked at Trollius so I don't know what it is doing -- maybe it 
> requires more ticks to reach this state? 
>
> FWIW, the idiom "yield from <lock>" is meant to be only used in 
> combination with a with-statement, like this: 
>
>     with (yield from lock): 
>         <code running with the lock held> 
>
> This is meant to be the closest analog to 
>
>     with lock: 
>         <etc.> 
>
> when using threaded locks. It is different from 
>
>     yield from lock.acquire() 
>
> which matches the threaded 
>
>     lock.acquire() 
>
> (i.e. no automatic release at end of block). 
>
> The problem is that the current lock implementation in asyncio allows 
> incorrect uses to go unchecked. I wonder if the correct solution isn't 
> to define an explicit context manager, so that "with lock" will fail 
> (no __enter__ method) rather than silently entering the block without 
> acquiring the lock. 
>
> I've just filed http://code.google.com/p/tulip/issues/detail?id=100 to 
> track this. 
>
>
> On Tue, Jan 7, 2014 at 11:48 AM, Marc Schlaich 
> <[email protected]<javascript:>> 
> wrote: 
> > Guido, I'm really confused by the behavior of the locks in the 
> unittests. 
> > E.g. I do not understand why the condition is not locked after a short 
> run 
> > of the event loop in test_wait (test_locks.ConditionTests). 
> > 
> > On trollius this fails (as expected IMO): 
> > 
> > FAIL: test_wait (test_locks.ConditionTests) 
> > ---------------------------------------------------------------------- 
> > Traceback (most recent call last): 
> >   File "/Users/marc/Documents/python/trollius/tests/test_locks.py", line 
> > 422, in test_wait 
> >     self.assertFalse(cond.locked()) 
> > AssertionError: True is not false 
> > 
> > 
> > Maybe you can shed some light on this and a few other issues: 
> > 
> https://bitbucket.org/haypo/trollius/pull-request/3/some-fixes-for-test_locks 
>
>
>
> -- 
> --Guido van Rossum (python.org/~guido) 
>

Reply via email to