On Sun, 15 May 2011 21:30:32 +0300, Piotr Szturmaj <bncr...@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:vladi...@thecybershadow.net