Immutable woes

Simen kjaeraas simen.kjaras at gmail.com
Tue Sep 21 00:48:15 PDT 2010


Bob Cowdery <bob at bobcowdery.plus.com> wrote:

> if I say something like:
> float[] xfer = new float[512];
> xfer = buffer[0 .. $/2];
> tid.send(xfer);
>
> it rightly tells me 'thread local data not allowed'. If I make it:
>
> immutable (float)[] xfer;
> xfer = buffer[0 .. $/2];
> tid.send(xfer);
>
> it tells me 'can't implicitly convert float[] to immutable (float)[]'
>
> If I try a float by float copy into xfer it can't because I've said the
> buffer is immutable. In the first example I can't figure out how to
> convert the slice into an immutable copy which I think is what I should
> be doing.
>
> Can someone point me in the right direction.

http://www.digitalmars.com/d/2.0/phobos/std_exception.html#assumeUnique

float[] xfer = new float[512];
xfer = buffer[0 .. $/2];
tid.send(assumeUnique(xfer));

This should solve your problems.

-- 
Simen


More information about the Digitalmars-d-learn mailing list