#threadpool
#threadpool
Вопрос:
Кто-нибудь может сказать мне, есть ли способ узнать максимальное количество потоков, которые могут выполняться в разных системах Windows?
Например — (предположение) 32-разрядная система Windows может запускать максимум 4000 потоков.
Ответ №1:
Я сомневаюсь, что существует максимальное количество. Ну, поскольку мы используем конечный объем памяти, это должно быть столько потоков, сколько вы можете вместить в память, или столько, сколько вы можете отслеживать. Каждая система отличается, и я знаю, что Java и C не имеют функции для обеспечения этого. C # может указать вам, сколько памяти требуется конкретному объекту / приложению, чтобы вы могли рассчитать оценку.
Вы могли бы протестировать это в своей системе. Напишите пример приложения, которое порождает потоки, и посмотрите, когда у вас закончится память. Используйте счетчик для их подсчета. Это даст вам примерно диапазон для вашей системы.
В Java вы можете использовать ExecutorService
с пулом потоков.. В зависимости от того, какую службу исполнителя вы используете, она может продолжать порождать потоки, если вы отправляете больше заданий. Похожий метод существует в C #.
Лучший вопрос заключается в том, каково максимальное количество потоков, которые нужно создавать и избегать перегрузки.
Вы пытаетесь взять на себя управление операционной системой и сделать свое собственное управление процессами / потоками? Вы не должны этого делать.
Комментарии:
1. Если кому-то нужно так много потоков, им следует рассмотреть возможность использования пула потоков или реинжиниринга программного обеспечения.