2012-07-17 93 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