Я планирую сделать программное обеспечение с большим количеством равноправных сетевых подключений. Обычно я создавал бы собственный поток для каждого соединения для отправки и получения данных, но в этом случае с 300-500 + соединениями это означало бы непрерывное создание и уничтожение большого количества потоков, которые, я думаю, были бы большими накладными расходами. И создание одного потока, который обрабатывает все соединения последовательно, вероятно, может немного замедлить работу. (Я не уверен в этом.)Как определить оптимальное количество потоков?
Вопрос: сколько потоков было бы оптимальным для решения таких проблем? Можно ли вычислить его в программном обеспечении, чтобы он мог сам решить создать меньше потоков на старом компьютере с не так много ресурсов и больше на новых?
Это теоретический вопрос, я бы не хотел, чтобы это было реализовано или зависит от языка. Однако я думаю, что многие люди будут советовать что-то вроде «Просто используйте ThreadPool
, он будет обрабатывать такие вещи», так что скажем, это не будет приложение .NET. (Я, вероятно, должен использовать некоторые другие части кода в старом проекте Delphi, поэтому язык будет, вероятно, Delphi или, возможно, C++, но это еще не решено.)
См. Http://stackoverflow.com/questions/481970/how-many-threads-is-too-many/481979#481979 – paxdiablo
Какая у вас ОС? Окна? –
Да, это Windows. – ytg