[Issue 10108] Thread local slice to array literal references the	same data
    Simen Kjaeraas 
    simen.kjaras at gmail.com
       
    Sat May 18 12:14:46 PDT 2013
    
    
  
On Sat, 18 May 2013 16:59:53 +0200, Sean Kelly <sean at invisibleduck.org>  
wrote:
> This is expected because the global is __gshared and there's therefore  
> no type protection from doing this. If you want safe sharing, make the  
> global shared.
[snip]
>> __gshared int[] gArr = [1,2,3];
>> int[] arr = gArr;
Uhm, you are aware this is the Bugzilla newsgroup, right? Please reply in
Bugzilla.
Also, that's exactly what we're saying. This code has problems:
import core.thread;
int[] arr = [1,2,3];
void main() {
     new Thread({arr[0] = 3;});
     assert(arr[0] == 1);
}
And they are caused by the data inside arr being shared. This is unsafe,
unexpected (due to safety of other globals) and, we feel, goes against
the D ethos.
-- 
Simen
    
    
More information about the Digitalmars-d-bugs
mailing list