Multithreading 使用QTtimer调度线程?
我正在处理一个扩展的著名生产商-消费者线程问题(作为家庭作业)。我有一个共享队列作为“我的缓冲区”,生产者需要每秒生成一个“元素” 我正在使用(我的第一次…)QT,我想要一个计时器,以便制作人每秒钟生成一个元素 我不明白QTimer图书馆。。。有人能告诉我定时器必须使用哪些库/函数吗?只是QTimer似乎是为GUI设计的。。。如果Qtimer是我必须使用的,那么如何使用Multithreading 使用QTtimer调度线程?,multithreading,qt,time,thread-safety,Multithreading,Qt,Time,Thread Safety,我正在处理一个扩展的著名生产商-消费者线程问题(作为家庭作业)。我有一个共享队列作为“我的缓冲区”,生产者需要每秒生成一个“元素” 我正在使用(我的第一次…)QT,我想要一个计时器,以便制作人每秒钟生成一个元素 我不明白QTimer图书馆。。。有人能告诉我定时器必须使用哪些库/函数吗?只是QTimer似乎是为GUI设计的。。。如果Qtimer是我必须使用的,那么如何使用 也许这是个愚蠢的问题,但这件小事花了我太多时间。。。我找不到答案 您只需要确保QEventLoop在每个需要执行工作的线程中运
也许这是个愚蠢的问题,但这件小事花了我太多时间。。。我找不到答案 您只需要确保QEventLoop在每个需要执行工作的线程中运行(使用QObject) 您已经有了一个运行
QApplication.exec()
的主事件循环(“GUI线程”)
然后创建另一个线程(执行并行工作),在该线程中运行QEventLoop。您通常会确保QObject(在这个额外线程中工作)将这个额外线程作为其“关联线程”。如果从额外线程中创建并安装QObject,则新QObject的关联线程将是当前线程
除此之外,还可以使用QueuedConnection在线程之间传递信号/插槽
我敢肯定,如果您进行搜索,会有大量的示例QTimer代码博客条目。您只需确保每个需要执行工作的线程(使用QObject)中都运行QEventLoop即可 您已经有了一个运行
QApplication.exec()
的主事件循环(“GUI线程”)
然后创建另一个线程(执行并行工作),在该线程中运行QEventLoop。您通常会确保QObject(在这个额外线程中工作)将这个额外线程作为其“关联线程”。如果从额外线程中创建并安装QObject,则新QObject的关联线程将是当前线程
除此之外,还可以使用QueuedConnection在线程之间传递信号/插槽
我敢肯定,如果您进行搜索,会有很多QTimer代码示例博客条目。您只需要使用QTimer每秒发出一个信号。然后将一个插槽连接到该信号,您可以启动一个线程,但您必须跨线程管理共享资源(“我的缓冲区”)
QTimer timer=newqtimer();
连接(计时器,信号(timeout()),此,插槽(On_timeout))
定时器->启动(1000)代码>
其中On_超时每秒钟执行一次
下面是一些关于Qtimer的基本教程。
您只需使用Qtimer每秒发出一个信号。然后将一个插槽连接到该信号,您可以启动一个线程,但您必须跨线程管理共享资源(“我的缓冲区”)
QTimer timer=newqtimer();
连接(计时器,信号(timeout()),此,插槽(On_timeout))
定时器->启动(1000)代码>
其中On_超时每秒钟执行一次
下面是一些关于Qtimer的基本教程。
如果制作程序中没有事件循环,为什么不使用Sleep()循环?如果制作程序中没有事件循环,为什么不使用Sleep()循环?