Потоки потоков из разных процессов

#.net #performance #threadpool #task-parallel-library

#.net #Производительность #пул потоков #задача-параллельная-библиотека

Вопрос:

Библиотека Task Parallel — это отличная оболочка вокруг ThreadPool, которая обеспечивает близкое к оптимальному использование всех ядер. Это означает не только порождение потоков, но и ограничение количества активных потоков, чтобы не перегружать систему слишком большим количеством активных потоков. Например, два параллельных параллельных.ForEach() не приведет к созданию 16 активных потоков на 8-ядерном компьютере. Будет 8 активных потоков, и работа обоих ForEach() будет сбалансирована между ними. Но эта балансировка работает на уровне процесса. Как насчет всей системы? Я обеспокоен возможным конфликтом при запуске 2 или более экземпляров моих приложений, привязанных к процессору, с использованием TPL. Вопрос в том, нормально ли с точки зрения производительности иметь много одновременных приложений, привязанных к процессору, ИЛИ стоит перенести всю логику в один процесс и использовать балансировку работы PTL?

Комментарии:

1. Вы пробовали это? Я думаю, это самый простой ответ? Создайте два процесса с интенсивным использованием процессора и посмотрите, как они обрабатываются?

2. Не учитывается, что может происходить в других процессах. Это сделано специально, операционная система обязана обеспечивать справедливое распределение системных ресурсов между процессами. Что он делает с уверенностью, типичная установка Windows имеет ~ 1000 потоков, идущих одновременно. Конечно, немногие из них активно сжигают циклы процессора.