On Friday, 19 October 2012 at 09:07:55 UTC, sclytrack wrote:

How does it deal with the problem where a pointer in TLS points to global data,

Need to run stop-the-world for shared heap. But it would be interesting to have blocks that have no shared pointers in them.


or worse yet, a pointer in the global heap points to TLS?


Could you give an example?



import std.stdio;

class Local
{
}

class Global
{
        Local data;
        int [] arr;
}

Local l2;
int [] arr;                     //tls

int main()
{
        shared Global g = new shared(Global);           //global heap
        Local l1 = new Local(); //future local heap
        //      g.data = l1;    //disallowed
        l2 = new Local();
        //      g.data = l2;    //disallowed
        arr = new int[10];      //future local heap
        g.arr = cast(shared(int[])) arr; //bypassed.    
        writeln("Complete");
        return 0;
}

Reply via email to