Pointer across threads
    Chris via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Nov  4 04:49:27 PST 2014
    
    
  
On Tuesday, 4 November 2014 at 12:47:11 UTC, Chris wrote:
> The following
>
> struct DATA {
>  short* data;
>  size_t len;
> }
>
> // data and len are provided by a C function
> // ...
> auto data = mymodule.getSpeechData();
> // cast to immutable, because of concurrency
> immutable short* tmp = cast(immutable)(data.data);
> auto proc = spawn(&processData, thisTid);
> send(processData, tmp, data.len);
>
> However, processData never receives "tmp". Is this because tmp 
> and data.data are still pointing to the same address? If this 
> is the case, why doesn't the compiler warn me? Or is it 
> something else (pointer not visible across threads?).
>
> Is there a work around? (I wanted to avoid having to convert 
> short* to short[] and .idup it.)
Sorry, it should read
send(proc, tmp, data.len);
    
    
More information about the Digitalmars-d-learn
mailing list