On Tue, 12 May 2009 10:12:48 -0400, Saaa <[email protected]> wrote:



I probably should have phrased my question better with the array, what I
was
wondering is if it was safe for say two threads to right to the array at
the same
time as long as I'm sure they're not writing to the same index of the
array?

You can do anything you want without thread safety, but you run the risk
of deadlocks or corrupted memory.
That is why the question was whether it was safe.

If two threads are writing to two different sections of memory, yes it is always safe :) I think that's one of the fundamental premises of threads running anyways. If you couldn't do this, you couldn't have threads.



The problem isn't writing to two different elements of an array,

the hard part is *ensuring* that you are writing to two different elements
of an  array.  Multithreading code is tough to write correctly, you may
want to  read a book on it.
And sometimes it is extremely easy to ensure you are never writing to the
same elements.

If you are doing anything interesting with an array, this is not the case. Might as well not pass the same array to both threads.

Maybe the OP doesn't understand that you can slice up an array quite easily. If you want to ensure two threads don't touch the same memory, don't give both threads access to the same memory. That's the easiest way to ensure thread safety.

i.e. I want thread 1 to initialize elements 0, 1, and 2, and thread 2 to initialize elements 3, 4, and 5:

thread1 = new ProcessingThread(arrayToInit[0..3]);
thread2 = new ProcessingThread(arrayToInit[3..6]);
thread1.start();
thread2.start();

Should be completely thread safe.

-Steve

Reply via email to