В прошлом, когда я использовал управляемый .NET C #, я обнаружил, что если я просто создаю потоки и запускаю на них что-то, все потоки будут собираться на одном процессоре. Это не очень хорошо, когда программа запускает что-то, что требует большой производительности.
Когда я искал в Интернете, он рекомендовал функцию SetThreadAffinityMask
в Windows API. В C # я могу только ВНЕШНИЕ из них.
Сейчас я работаю только над приложением Windows API. Я хочу знать, автоматически ли многопоточное приложение win32 назначает потоки различным процессорам. Если НЕТ, как получить AffinityMasks всех процессоров на компьютере (для использования SetThreadAffinityMask
)?
Альтернативы, которые могут назначать потокик разным процессорам тоже все приветствуются.