OpenThreads.Condition是OpenThreads库的一个类,提供了一种同步线程的机制。它允许一个线程等待另一个线程完成某个任务,并在完成后继续执行。
typedef OpenThreads::ScopedPtr<OpenThreads::Condition> ConditionPtr;
构造函数,创建一个新的条件变量。
Condition();
析构函数,销毁条件变量。
~Condition();
等待条件变量被通知。
void wait();
在指定的时间内等待条件变量被通知。
bool timedWait(const timespec& timeout);
通知一个正在等待的线程。
void notify();
通知所有正在等待的线程。
void notifyAll();
#include <OpenThreads/Condition>
#include <OpenThreads/Thread>
#include <iostream>
OpenThreads::Condition condition;
// 子线程
class MyThread : public OpenThreads::Thread
{
public:
MyThread() {}
virtual ~MyThread() {}
protected:
virtual void run()
{
// 模拟完成一个任务
OpenThreads::Thread::microSleep(5000);
// 通知主线程
condition.notify();
}
};
int main()
{
MyThread thread;
// 启动子线程
thread.startThread();
// 等待子线程通知
condition.wait();
std::cout << "子线程完成任务" << std::endl;
return 0;
}
在此示例中,主线程等待子线程的通知,子线程模拟完成一个任务后通知主线程。主线程等待的过程中,会阻塞当前线程,直到收到通知后才继续执行。