How you guys go about -BetterC Multithreading?

rikki cattermole rikki at cattermole.co.nz
Fri Nov 10 00:02:46 UTC 2017


On 09/11/2017 4:00 PM, Petar Kirov [ZombineDev] wrote:
> On Thursday, 9 November 2017 at 13:00:15 UTC, ParticlePeter wrote:
>> On Thursday, 9 November 2017 at 12:19:00 UTC, Petar Kirov [ZombineDev] 
>> wrote:
>>> 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
>>
>> Forgot to mention, I'll try this first, I think its a good first step 
>> towards -BetterC usage. But in the end I want to see how far I can get 
>> with the -BetterC feature.
> 
> In short, the cost / benefit of going all the way version(D_BetterC) is 
> incredibly poor for regular applications, as you end up a bit more 
> limited than with modern C++ (> 11) for prototyping. For example, even 
> writers of D real-time audio plugins don't go as far.

I just did some work for Guillaume Piolat (p0nce author of dplug), guess 
what is going to be used again, druntime!




More information about the Digitalmars-d-learn mailing list