我在 QT 中有一个程序,它创建大量对象来发出大量请求。这个数字可能非常大,碰巧有这个错误:
GLib-ERROR **:为 GWakeup 创建管道:Trop de fichiers ouverts
Trop de fichiers ouverts = 打开的文件太多(法语)
我想通过创建一个 QSemaphore 来限制连接对象的数量(例如 10-20),在创建新对象之前获取一个对象并在销毁它时释放它。
实际上发生的情况是,当我尝试获取值为 0 的信号量时,程序会等待,甚至对象的代码也会停止运行,这导致永远不会释放信号量并导致无限循环。
为什么其他对象不继续执行?如何解决这个问题?