On Tuesday, 29 May 2018 at 21:06:52 UTC, Jonathan M Davis wrote:
On Wednesday, May 30, 2018 08:43:33 rikki cattermole via Digitalmars-d wrote:
On 30/05/2018 8:37 AM, Tony wrote:
> On Tuesday, 29 May 2018 at 20:19:09 UTC, bachmeier wrote:
>> I don't think it's difficult to do that yourself. There's >> no need to have a formal split. One example is that it's >> really nice to have the GC available for part of the >> program and avoid it for another part. @nogc gives you a >> guarantee. Different variants of the language are a special >> case of this that is equivalent to annotating the entire >> program to restrict behavior. That's rarely desirable.
>
> What would be an example of a type of application (or maybe > that should be "which type of domain" or "which type of > developer") where you would want part of it to do garbage > collection and the rest of it do not do garbage collection?

GUI's, audio systems, language tooling, games, I'm sure somebody can come up with a much more longer list.

Basically, stuff that can't afford to have the GC pause the program for more than a millisecond or two has to be careful with the GC, but your average program is going to be perfectly fine with it, and in many cases, it's just part of the program that can't afford the pause - e.g. a thread for an audio or video pipeline. The rest of the program can likely afford it just fine, but that thread or group of threads has to be at least close to realtime, so it can't use the GC.

You cant call any code that might take a lock if you're doing real time audio, so that means no malloc/free either. That's standard practice. You either allocate everything up front or you do something like I do which is lock free queues ferrying things to and from the audio thread as needed.

I mean the point is needing different memory management for different parts of the program is already a thing with real time audio, GC doesnt really change that.

Reply via email to