Определить максимальное количество потоков, которые выполняются в разных системах Windows

#threadpool

#threadpool

Вопрос:

Кто-нибудь может сказать мне, есть ли способ узнать максимальное количество потоков, которые могут выполняться в разных системах Windows?

Например — (предположение) 32-разрядная система Windows может запускать максимум 4000 потоков.

Ответ №1:

Я сомневаюсь, что существует максимальное количество. Ну, поскольку мы используем конечный объем памяти, это должно быть столько потоков, сколько вы можете вместить в память, или столько, сколько вы можете отслеживать. Каждая система отличается, и я знаю, что Java и C не имеют функции для обеспечения этого. C # может указать вам, сколько памяти требуется конкретному объекту / приложению, чтобы вы могли рассчитать оценку.

Вы могли бы протестировать это в своей системе. Напишите пример приложения, которое порождает потоки, и посмотрите, когда у вас закончится память. Используйте счетчик для их подсчета. Это даст вам примерно диапазон для вашей системы.

В Java вы можете использовать ExecutorService с пулом потоков.. В зависимости от того, какую службу исполнителя вы используете, она может продолжать порождать потоки, если вы отправляете больше заданий. Похожий метод существует в C #.

Лучший вопрос заключается в том, каково максимальное количество потоков, которые нужно создавать и избегать перегрузки.

Вы пытаетесь взять на себя управление операционной системой и сделать свое собственное управление процессами / потоками? Вы не должны этого делать.

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

1. Если кому-то нужно так много потоков, им следует рассмотреть возможность использования пула потоков или реинжиниринга программного обеспечения.