Passing Command Line Arguments to a new Thread

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Aug 7 12:30:23 PDT 2014


On Thursday, 7 August 2014 at 19:08:37 UTC, Johannes Blume wrote:
> On Thursday, 7 August 2014 at 18:38:37 UTC, Marc Schütz wrote:
>> But this shouldn't be necessary, right? It's a mutable slice 
>> to immutable data, but the slice is passed by value, so no 
>> mutable sharing takes place.
>
> The elements of the slice itself are mutable, you can e.g. 
> assign some other string to args[1], which would be a 
> potentially racy change among all threads which share that 
> slice. Only the information "start address of slice" and 
> "length of slice" are copied by value, which doesn't protect 
> from this.
>
> To be able to share the slice, it would need to be typed as 
> "immutable(string)[]" instead.

Ah, indeed. It's mutable ref to mutable ref to immutable data.


More information about the Digitalmars-d-learn mailing list