870920 Menu

JUCE类库多线程之WaitableEvent详解

以上小节中所讨论的多线程技术,其每一个线程的启动、停止、等待、唤醒等等,均需通过自身的控制,也就是:线程自己控制自己的启动、停止、等待、唤醒等等。在多线程编程中,这种基于自身的控制方式并不能满足所有需求,很多时候,需要线程间的互相控制。比如:

同时运行A线程和B线程,A线程随时可以让B线程暂停执行,处于等待(挂起)状态,以便自己获得最大的可使用资源,而后,在某个条件下,将处于等待状态的B线程唤醒,让其继续执行。反之亦然(即B线程控制A线程的暂停和继续) 。

JUCE类库中,WaitableEvent类可实现线程间的互相控制。该类的作用是:

某个线程可利用本类对象调用wait() 函数, 从而让自己处于等待状态,而另一个线程利用本类对象调用signal()函数则可唤醒之。

显然,要让各个线程同时持有本类的同一个对象,必须使用传指针或传引用的方式。比较稳妥的思路是:这些继承自Thread类的线程,如需互相控制,则其构造参数中设置一个本类的指针或引用型对象。而本类的对象则由内容组件类声明、创建和管理。