Hi, At Thu, 17 May 2007 15:30:08 +0900, Pete wrote in [ruby-talk:251886]: > >>The idea of the ensure was to release the semaphore if the callback hadn't > >> -- i.e. if break bypassed the yield. > > > >The ensure won't called until the callback released the > >semaphore because doeach waits it. > This was *not* what I observed. I think what was happening was that > 'break' was being invoked from another OS thread, so the ensure got run > too. (I had printf telltales everywhere to show me which bits were > executing, and ensure got run even though doeach was still suspended.) > Rather a mess, in other words... Sorry, I misread. -- Nobu Nakada