Sending an immutable object to a thread
Frank Pagliughi via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jul 19 10:04:04 PDT 2015
> It looks like passing a pointer to an immutable(Message) works
> as well:
Oh, yes, pointer. Ha! I didn't even think of that. Thanks.
I'm not familiar with how garbage collection works in D. If the
initial reference goes out of scope, and you just have a pointer
- in another thread, no less - then are you still guaranteed that
the object will not disappear while the pointer exists?
Like if I did something akin to:
// ...like before...
void send_msg(Tid tid, int n)
{
auto msg = new immutable(Message)(n);
send(tid, thisTid(), &msg);
}
void main()
{
Tid tid = spawn(&threadFunc);
send_msg(tid, 100);
receiveOnly!int();
}
Do I know that the message object won't be garbage collected
before the thread finishes with it? (I realize this is a very
artificial example, but something like this could happen in a
bigger library).
Frank
More information about the Digitalmars-d-learn
mailing list