QT QEventLoop / QThread如何在事件循环上同步?

时间:2012-03-09 16:06:04

标签: c++ qt

我需要一种方法来了解事件循环何时开始以及何时退出。我正在尝试在线程之间进行同步,并且在循环开始和退出时很难解决涉及isRunning的竞争条件。

我相信开始时我可以简单地发布一个事件,因为一旦它开始就会排队并调度。但是对于退出,我不知道如何处理它。我需要在循环完成之前发生的某种事件。

有没有办法实现这个目标?


我需要这个的原因是将事件发布到线程。我有一个函数,特别是一个清理函数,比如cleanupObject。可以从任何线程调用此函数,并期望对该对象进行清理。这些对象由具有事件循环的线程拥有。如果此事件循环正在运行,则必须将此cleanupObject请求作为该事件循环中的事件处理。如果事件循环没有运行,则必须以不同方式处理清理(这在关闭期间发生)。

竞争存在是因为isRunning没有我可以使用的同步,所以虽然我在调用它时说的是真的,但它可能不再在后续运行。我需要知道我发布到循环的事件是否会被处理,因为如果它不会被处理,我必须以不同的方式进行清理。

0 个答案:

没有答案