Talk by Herb Sutter: Bridge to NewThingia

IGotD- nise at nise.com
Thu Jul 2 12:36:09 UTC 2020


On Thursday, 2 July 2020 at 11:13:41 UTC, claptrap wrote:
>
> If you're doing a plugin the host callback thread wont be known 
> to the D runtime and so the GC wont pause it. So as long as you 
> dont call anything that might trigger the GC while in the 
> callback you wont get GC pauses affecting the audio rendering. 
> This can be mechanically checked by the compiler with the @nogc 
> attribute.
>
> The point is even in C++ you should never ever do malloc/free 
> in the audio thread, you might get away with it under low CPU 
> load, but if you're running at high load it can barf the audio. 
> So GC is just a variation on the same problem. Dont call 
> malloc/free, dont use GC in anyway.
>
> You also have to make sure that the GC knows about your 
> pointers, so if you have a pointer to something, make sure it's 
> reachable from stuff the GC will scan. If it exists only on the 
> stack in the audio thread the GC could collect it as it wont 
> know it is still in use.
>
> Also see this...
>
> https://github.com/AuburnSounds/Dplug

I think you can make a callback thread to D work if you have a 
trampoline function and then call

thread_attachThis
rt_moduleTlsCtor

before calling the actual callback. Then the thread will be known 
to D runtime.



More information about the Digitalmars-d-announce mailing list