Есть код
class Program
{
static void Main(string[] args)
{
string filePath = @"c:\test\test.txt";
string tempPath = Path.GetTempPath();
Task.WaitAll(Enumerable.Range(1, 20)
.Select(i => Task.Run(() =>
{
var destFilePath = Path.Combine(tempPath, $"{i.ToString()}.txt");
File.Copy(filePath, destFilePath);
//... process destFile
})).ToArray());
Debug.WriteLine(tempPath);
}
}
где просиходит создание копий файла test.txt и их обработка в многопоточном режиме. Здесь сразу хочется отметить свое понимание разницы между многопоточно и паралельно: если при создании очередно потока, окажеться свободным одно из ядер процесса, то обработка очередной копии файла и во все будет запущенна параллельно.
Сейчас ведь в различных потоках идет доступ к разделяемому ресурсу test.txt и никакой синхронизации потоков я не делаю как видите и почему тогда все проходит гладко и никаких exception нет? Или Task.WaitAll() сам делает синхронизацию?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости