Immutable woes
Bob Cowdery
bob at bobcowdery.plus.com
Tue Sep 21 00:29:17 PDT 2010
Hi
I'm stuggling with immutable.
I have a fixed size buffer which is used as a circular buffer of floats
and is effectively double buffering data I wish to transfer to another
thread. At an appropriate point I take the top half or bottom half of
the buffer and send it to another thread.
To do this I need to copy the data to an immutable transfer buffer to
use in the send. I'm sure this is simple but I can't figure it.
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.
Thanks
Bob
More information about the Digitalmars-d-learn
mailing list