Futex hang when running event loop on a separated thread

Marc Aymerich glicerinu at gmail.com
Tue Nov 24 13:37:35 EST 2015


On Tue, Nov 24, 2015 at 7:11 PM, Zachary Ware
<zachary.ware+pylist at gmail.com> wrote:
> On Tue, Nov 24, 2015 at 9:46 AM, Marc Aymerich <glicerinu at gmail.com> wrote:
>> if __name__ == '__main__':
>>     loop_container = {}
>>     handler = threading.Thread(target=run_loop, args=(loop_container, ))
>>     handler.start()
>>     try:
>>         time.sleep(10000)
>>     finally:
>>         loop_container['loop'].stop()
>
> loop.stop() must be called from the thread running the loop.  You can
> do this by doing
> `loop_container['loop'].call_soon_threadsafe(loop_container['loop'].stop)`
> from the main thread (untested).
>

Hi Zachary,
nice to know about call_soon_threadsafe!

still it appears to work only if the main thread is in the foreground
(as of calling Thread() with deamon=True), I don't get why it behaves
differently :( maybe it is waiting for other stuff, but no idea how to
confirm this with strace of other means.. i always see the same
'futex(0x7f9a70000c10, FUTEX_WAIT_PRIVATE, 0, NULL'

-- 
Marc



More information about the Python-list mailing list