How do I have multiple threads (of same Thread class) call a delegate on multiple objects?
Enjoys Math via Digitalmars-d
digitalmars-d at puremagic.com
Fri Aug 25 07:06:39 PDT 2017
I have a struct A:
struct A {
this () {
b = new B();
b.connect(& receive);
}
void receive();
}
a thread class
class B : Thread {
this() {
onEvent = null;
super(& run);
}
void connect (void delegate eventHandler) {
onEvent = eventHandler;
}
void run() {
while (true) {
// ...
onEvent();
// ...
}
}
void delegate() onEvent;
}
The result is that receive() is only getting called for the
last-most A that was intialized, although run() I've verified is
being called on all the right instances of B.
I've tried the exact same set up with std.signals and currying
the delegate through a class ReceiveEvent since structs can't
receive signals. The exact same thing happened.
Can't figure this one out...
I've tried passing a void* pointer to A along with the delegate
and that did nothing.
Thanks.
More information about the Digitalmars-d
mailing list