質問: プロセスごとにいくつの「QThread」インスタンスが「合理的」ですか?
(これは特に Qt のQThread
インスタンスを参照していますが、論理的には、質問は任意のライブラリを使用するスレッドベースの設計に関連している必要があります。)
たとえば、プラットフォーム固有のリソース制限がデフォルトで最大 30QTcpSocket
のインスタンスをサポートするように設定されている場合があることを私は理解していQThread
ます。 . ただし、これらのスレッドのほとんどはネットワーク トラフィックを「スリープ/待機」する必要があるため、これは大した問題ではない可能性があります。
QThread
同様に、 「重い連続作業」を課されたインスタンスの「コア」または「ネイティブスレッド実行可能」の数までインスタンス化すると仮定します。したがって、8 つのコアがある場合、それはさらに 8 つのQThread
インスタンスになる可能性があります (システムが最大負荷にある場合、これらは常に動作している可能性があります)。
そしてもちろん、「メインスレッド」があります。
これは、インスタンス化することを意味しますか:
(30 個のソケットスレッド) + (各コアの 8 個のワーカー) + (1 個のメインスレッド)
...39 スレッドの場合 (8 コア システム上)?
具体的には、アプリケーション固有のニーズに他のスレッドプールのニーズがあり、ここに 12 個のインスタンスを追加し、そこにQThread
12QThread
個のインスタンスを追加したQThread
場合、それらのほとんどが「アイドル/眠っている/待っている」ですよね?
それで、カットオフはありますか?「39スレッド」は「合理的」ですが、「300スレッド」は「不合理」ですか?
(はい、「スレッドあたり 10MB」などの「スレッドあたりのデフォルト スタック サイズ」があることは理解しています。そのため、仮想メモリによって制限されています。しかし、実際には、30K スレッドをインスタンス化するのはばかげていますか? - そんなものを欲しがるのは悪い設計ですか?)