Non-GC threads
Vladimir Panteleev
vladimir at thecybershadow.net
Tue May 17 17:35:59 PDT 2011
On Sun, 15 May 2011 21:30:32 +0300, Piotr Szturmaj <bncrbme at jadamspam.pl>
wrote:
> What are the consequences of using non garbage collected threads in D?
If you move pointers around while the GC is looking for them, the GC might
miss them and free referenced memory. This will lead to memory corruption.
The GC will also not be able to scan the stack and registers of threads it
doesn't know about.
> I want to write a reliable communication protocol, but I don't want
> suspend this code by the GC.
The GC might be much faster than you think it is. You should try
benchmarking the GC with a typical memory load, the delay might be
acceptable for your purposes.
> Is there any method to bind allocated memory to thread itself, so it
> will be freed after thread terminates, but not in the middle of
> execution?
You can use malloc/free together with RAII. Or something hacky and
platform-dependent like pthread_cleanup_push().
> This is important because in the other case, GC could free memory
> referenced by non-GC thread.
I can think of no perfect solution for your case. You'll either need to
give up on using managed memory, or accept the periodical delays of the GC.
--
Best regards,
Vladimir mailto:vladimir at thecybershadow.net
More information about the Digitalmars-d-learn
mailing list