This is the only issue preventing a truly thread-local GC for better multi-core scalability for D applications. From: https://github.com/D-Programming-Language/druntime/pull/1057#issuecomment-65904128

The best way to achieve a thread-local GC would be to improve and enforce `shared`-correctness in Phobos/druntime (at first). We need to start considering `shared` as a heap storage attribute as well, for consistency. An optional compiler warning (through a flag) would be a start.

If even a 30% speedup is possible down the line, it's worth it. The more threads, the more improvements.

There's also some new opportunities with this. Here's an example that involves TLS data to influence the behavior of shared objects, without using a global `T[Thread]` hashmap.

```D
shared class A {
        private bool m_init; // different on every thread
        
        public shared:
        AA m_impl;
        
        synchronized void init() {
                if (!m_init)
                        m_impl.add(Thread.getThis());
        }
        
        ...
        
        
}
```

Reply via email to