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 回答