Как сделать статическую переменную потокобезопасной
У меня есть этот статический класс, который содержит статическую переменную (простое int). Я реализовалlock()
вRun()
метод потоков, поэтому никакие другие потоки не могут получить доступ к этому классу одновременно, но переменная все еще сходит с ума, показывая дубликаты, безумно высокие значения и т. д.
Это класс:
public static class ExplorationManager
{
public static int Counter = 0;
public static void ExplorerMaker(List<int[]> validPaths, List<string> myParents, string[,] myExplorationMap, List<int[]> myPositions)
{
foreach (var thread in validPaths.Select
(path => new Explorer(myParents, path, myExplorationMap, myPositions)).
Select(explorer => new Thread(explorer.Explore)))
{
thread.Name = "Thread of " + Counter + " generation";
Counter++;
thread.Start();
}
}
}
Есть ли способ сделать эту переменную «более» потокобезопасной?