On Thursday, 18 June 2015 at 11:43:18 UTC, ketmar wrote:
On Wed, 17 Jun 2015 22:35:12 +0000, Etienne Cimon wrote:

e.g. __gshared MyObj g_obj1;

Thread 1: g_obj1 = new MyObj;
Thread 2: g_obj1.obj2 = new MyObj;
Thread 3: write(g_obj1.obj2); <-- access violation (probably)

so no way to anchor the whole object tree by assigning it to __gshared root? sure, this will never make it into mainline.

__gshared is a little sketchy. We can have TLS GC by default by piping `new shared` to a shared GC. It's even safer, because then we have the type system helping out.

e.g. shared MyObj g_obj1;
Thread 1: g_obj1 = new shared MyObj;
Thread 2: g_obj1.obj2 = new shared MyObj;
Thread 3: write(g_obj1.obj2); <-- success!

Reply via email to