Signals using shared slots
Dechcaudron via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jun 16 16:53:29 PDT 2016
Hey there,
I'm currently starting to use signals. They are great (thanks
Walter!) but there is an important limitation since the only
slots it can take are non-shared, which forces them to operate
within a single thread.
I understand the `Not safe for multiple threads operating on the
same signals or slots.` notice in
https://dlang.org/phobos/std_signals.html, but this is not about
operating them in different threads. It is about calling shared
methods, which should probably be supported, since I might want
to issue callbacks to shared instances (and indeed I do).
Still, regarding that notice, I understand we are to externally
synchronize calls to the signal's methods if we intent to use
signals in __gshared mode, right?
Currently there is a thing going on in my program I don't quite
understand (though it works): I pass a delegate of a TL object as
a slot to a manually synchronized signal, only to later call emit
on that signal from a different thread. The result: it indeed
ends up calling the right instance but apparently breaking TLS.
Checking the direction of a TL int variable from methods called
from different threads issue the very same pointer value, even
though this int variable, as well as the whole object instance,
should be confined to the original thread.
Am I getting something wrong about the whole threading thing?
More information about the Digitalmars-d-learn
mailing list