Как создавать потоки на разных ядрах процессора?

Это не обязательно так просто, как windows-applications использование пула потоков.

По .net умолчанию пул потоков выделяет .net несколько потоков для каждого dot-net процессора. Поскольку каждый .net-framework поток, участвующий в выполняемой .net вами работе, имеет затраты dot-net (накладные расходы на переключение threads задач, использование очень windows-programming ограниченного кеша L1, L2 windows-programming и, возможно, L3 ЦП и т. Д.), Оптимальное csharp количество потоков для использования multithreading составляет <= количество c#.net доступных ЦП - если каждый windows-application поток не запрашивает службы dot-net с других машин - например, веб-служба windows-programming с высокой степенью масштабируемости. В thread некоторых случаях, особенно c#.net в тех, которые связаны с .net большим объемом операций multithreading чтения и записи на жесткий .net-framework диск, чем с активностью процессора, вам threads может быть лучше с одним windows потоком, чем с несколькими csharp потоками.

Для большинства c#.net приложений и, конечно, для windows-application кодирования WAV и MP3, вам windows-applications следует ограничить количество c# рабочих потоков количеством windows-programming доступных процессоров. Вот .net код C# для определения количества windows-application процессоров:

int processors = 1;
string processorsStr = System.Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");
if (processorsStr != null)
    processors = int.Parse(processorsStr);

К сожалению, это threads не так просто, как ограничить c# количество процессоров. Вы threads также должны принять во внимание csharp производительность контроллера windows-programming (ов) жесткого диска и диска csharp (ов).

Единственный способ .net-framework найти оптимальное количество threads потоков - это пробная ошибка. Это dot-net особенно верно, когда вы windows используете жесткие диски, веб-службы dotnet и т. Д. С жесткими дисками windows-programming вам может быть лучше не использовать .net-framework все четыре процессора на csharp вашем четырехпроцессорном c#.net процессоре. С другой стороны, с .net некоторыми веб-службами вам windows-application может быть лучше делать 10 c#.net или даже 100 запросов на windows-programming процессор.

c#

.net

windows

multithreading

2022-08-28T06:28:20+00:00