在QT中并行执行对象

时间:2012-07-17 13:33:46

标签: qt parallel-processing semaphore

我在QT中有一个程序,可以创建大量的对象来进行大量请求。 这个数字可能非常大,恰好有这个错误:

  

GLib-ERROR **:为GWakeup创建管道:Trop de fichiers ouverts

     

Trop de fichiers ouverts =打开的文件过多(法语)

我想通过创建QSemaphore来限制连接对象的数量(比如10-20),在创建新对象之前获取一个并在销毁它时释放它。

实际上发生的是,当我尝试获取值为0的信号量时,程序会等待,甚至对象的代码也会停止运行,从而导致永远不会重新发布信号量并进入无限循环。

其他对象怎么不继续执行?怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

您通常会使用thread pool,大量的请求会排队,但只有一组请求一次运行(池中的线程数),当一个完成队列中的下一个请求时