У меня есть 4 потока, каждый из которых имеет свой цикл, и они получают доступ к списку, который содержит дельта-время для каждого потока. Поскольку в этом примере 4 потока, в списке будет 4 элемента. Могут ли эти потоки изменить значение назначенного им индекса (пример: поток 0 - индекс 0 списка) без блокировок, поскольку я знаю, что никакой другой поток не будет писать в этот индекс, или если мне просто нужно использовать блокировки для этого.
Я уже реализовал это, и это, похоже, не влияет на другие значения или не повреждает список, но я хочу убедиться.
int threadCount = 4;
bool run = true;
List<double> lastDeltaTime = new List<double>();
private List<Thread> threadList = new List<Thread>();
void InitializeThreads()
{
for (int i = 0; i < threadCount; i++)
{
int tempName = i;
Thread tempThread = new Thread(() => ThreadLoop(tempName));
threadList.Add(tempThread);
lastDeltaTime.Add(0);
}
for (int i = 0; i < threadCount; i++)
{
threadList[i].Start();
}
}
void ThreadLoop(int threadName)
{
double lastTime = DateTime.UtcNow.Ticks;
while(run)
{
double currentTime = DateTime.UtcNow.Ticks;
double deltaTime = ((currentTime - lastTime) / 10000000) * timescale;
lastDeltaTime[threadName] = deltaTime; //line setting deltaTime
//do work
//end work
lastTime = currentTime;
}
}