0

多数のリクエストを行うために大量のオブジェクトを作成するプログラムをQTに持っています。この数は潜在的に非常に大きく、このエラーが発生する可能性があります:

GLib-ERROR **: GWakeup 用のパイプの作成: Trop de fichiers ouverts

Trop de fichiers ouverts = 開いているファイルが多すぎます (フランス語)

QSemaphore を作成し、新しいオブジェクトを作成する前にそれを取得し、それを破棄するときにそれを解放することによって、接続オブジェクトの数を (10 ~ 20 のように) 制限したかったのです。

実際には、値 0 のセマフォを取得しようとすると、プログラムが待機し、オブジェクトのコードでさえ実行が停止し、セマフォが解放されず、無限ループが発生します。

他のオブジェクトが実行を継続しないのはなぜですか? これを解決するには?

4

1 に答える 1

0

通常はスレッドプールを使用します。非常に多数のリクエストがキューに入れられますが、キュー内の次のリクエストが終了したときに一度に実行されるのはそれらのセットのみです (プール内のスレッドの数)。

于 2012-07-17T13:53:30.023 に答える