2012-07-17 111 views
0

我在QT中有一個程序,它可以創建大量的對象來發出大量的請求。 這個數字是potentialy非常大的一個恰巧有此錯誤:在QT中並行執行對象

GLib的-ERROR **:創建管材GWakeup:特羅普德fichiers ouverts

特羅普德fichiers ouverts =太多的文件打開(法國)

我想通過創建一個QSemaphore,創建新的對象之前獲取一個並摧毀它時將其釋放,以限制連接對象(喜歡10-20)的數目。

實際上發生的事情是,當我嘗試獲取值爲0的信號量時,程序將等待,甚至對象的代碼停止運行,從而導致永遠不會使信號量再次平衡並導致無限循環。

其他對象如何不能繼續執行?如何解決這個問題?

回答

0

您通常會使用一個thread pool,一個非常大的數量的請求排隊,但只有一組人在一次運行時,一個結束隊列中的下一個(在池中的線​​程數)開始

+0

我的線程使用QNetworkManager進行異步調用。如果運行功能完成後刪除對象,我怎麼才能得到答案 – Amxx 2012-07-17 14:03:31