How you guys go about -BetterC Multithreading?
Petar
Petar
Thu Nov 9 12:19:00 UTC 2017
On Thursday, 9 November 2017 at 11:08:21 UTC, ParticlePeter wrote:
> Any experience reports or general suggestions?
> I've used only D threads so far.
It would be far easier if you use druntime + @nogc and/or
de-register latency-sensitive threads from druntime [1], so
they're not interrupted even if some other thread calls the GC.
Probably the path of least resistance is to call [2] and queue
@nogc tasks on [3].
If you really want to pursue the version(D_BetterC) route, then
you're essentially on your own to use the threading facilities
provided by your target OS, e.g.:
https://linux.die.net/man/3/pthread_create
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx
Though you need to be extra careful not to use thread-local
storage (e.g. only shared static and __gshared) and not to rely
on (shared) static {con|de}structors, dynamic arrays, associative
arrays, exceptions, classes, RAII, etc., which is really not
worth it, unless you're writing very low-level code (e.g. OS
kernels and drivers).
[1]: https://dlang.org/phobos/core_thread#.thread_detachThis
[2]: https://dlang.org/phobos/core_memory#.GC.disable
[3]: https://dlang.org/phobos/std_parallelism#.taskPool
More information about the Digitalmars-d-learn
mailing list