Comment #0 by verylonglogin.reg — 2013-02-27T04:02:34Z
`std.signal` implementation is written like it is called from a single thread or explicitly synchronized. The reality is on objects collecting GC calls dispose events of finalizing object from its thread. So `unhook` can be called in a middle of `emit`, `connect`, or `disconnect` freezed in other thread.
Comment #1 by verylonglogin.reg — 2013-02-27T04:03:21Z
As we can't lock GC (at least in `emit`) some sort of lock-free programming should be used here.
Comment #2 by verylonglogin.reg — 2013-02-27T06:03:54Z