У меня есть счетчик потоков pCount, и у меня есть массив float []. Я хочу получить указатель на массив, а затем на основе pCount создать столько потоков и заполнить массив данными.
fixed (float* pointer = array)
{
IntPtr fPtr = new IntPtr(pointer);
for (int i = 0; i < pCount; i++)
{
Thread t = new Thread(() => ThreadMethod(fPtr, blockWidth, blockHeight, xIndex)));
t.Start();
}
}
private unsafe void ThreadMethod(IntPtr p, int blockWidth, int blockHeight, int startX)
{
Random RandomGenerator = new Random();
for (int x = startX; x < startX + blockWidth * blockHeight; x++)
{
((float*)p)[x] = ((float)(RandomGenerator.NextDouble()) - 0.5f) * 2.0f;
}
}
Так что, если массив был 1000x1000, и у меня 4 потока, я хочу, чтобы поток 1 заполнял данные от 0 до 250, затем поток 2 от 250 до 500, поток 3 от 500 - 750 и поток 4 от 750 - 1000.
Но способ, который я описал там, не работает. Кто-нибудь может помочь?