Thread GC non "stop-the-world"

Oscar Martin via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 23 11:39:08 PDT 2014


On Tuesday, 23 September 2014 at 01:58:50 UTC, Rikki Cattermole 
wrote:
> Short, I dislike pretty much all changes to __gshared/shared. 
> Breaks too many things.
> Atleast with Cmsed, (I'm evil here) where I use __gshared 
> essentially as a read only variable but modifiable when 
> starting up (to modify need synchronized, to read doesn't).
>

Yeah, these changes break many things, and so are not suitable 
for D2. My intention was only to point out how expensive is for 
the GC to deal with shared memory.

Come to think a little more: what if each thread can have its own 
GC, but by default all use the current GC (this would require 
minimal changes to druntime). "__gshared", "shared" and 
"immutable", continue as now, which does not break anything. If I 
as a programmer take care of managing (either manually or through 
reference counting) all of the shared memory ("__gshared", 
"shared" or "immutable") that can be referenced from multiple 
threads, I could replace in my program the global GC by a 
indiviual thread GC

I'll try to implement a GC optimized for a thread and try that 
solution


More information about the Digitalmars-d mailing list