Я использую многопоточность в моем приложениипроверка условие не выполняется при использовании многопоточности
Я создаю папку, когда папка уже не существует
if (!ExistingFolders.Contains(currentFolder)){
if (lastCreatedFolder != folder) {
lastCreatedFolder = folder;
CreateNewFolder(context, siteLink, lName, fName);
}
}
Когда есть 5 потоков, работающих параллельно, это условие не работает!! Например, все 5 потоков пытаются создать папку с именем «New» первого один становится создан, в то время как остальные бросают «Папка уже существует» ошибка как его уже создало
Как я могу проверить состояние в Это дело?
Здесь все 5 потоков работают параллельно, и условие истинно для всех тех случаях, когда, как это должно быть справедливо только в первом случае
Что вы хотите сказать? –
Это хорошо известная проблема. Просто обработайте ошибку. – harold
Почему нитки не создают папку. Создайте его upftont в основном потоке, и после прекращения выполнения потоков удалите его, если он бесполезен. Вы нажимаете идеально синхронизацию на несколько потоков и резко понижаете их производительность, используя блокировку, чтобы решить проблему, которую они не хотят решать. Найдите способ в своей архитектуре, чтобы избежать блокировки, насколько это возможно. – Tigran