Нет, вам нужно использовать блок блокировки, чтобы никто не пытался прочитать массив, пока какой-то другой процесс пишет в него. В противном случае у вас могут возникнуть проблемы.
Это на самом деле довольно просто в C #, вы можете просто сделать это:
// declare an object to use for locking
Object lockObj = new Object();
// declare the array
int[] x = new int[5];
// set the array value (thread safe operation)
public void SetArrayVal(int ndx, int val)
{
if (ndx < 0 || ndx >= x.Length)
{
throw new ArgumentException("ndx was out of range", ndx);
}
lock (lockObj )
{
x[ndx] = val;
}
}
// get the array value (thread safe operation)
public int GetVal(int ndx)
{
if (ndx < 0 || ndx >= x.Length)
{
throw new ArgumentException("ndx was out of range", ndx);
}
lock (lockObj )
{
return x[ndx];
}
}
Я бы не стал так сильно беспокоиться о производительности, как о том, чтобы убедиться, что вы правильно настроили резкость, что очень важно.