///
///
/**
* @description 条件变量对象
*
* 条件变量是利用纤程间共享的全局变量来进行同步的一种机制,主要包括两个动作:
* 1)一个线程等待某个条件成立,而将自己挂起;
* 2)另一个线程使条件成立,并通知等待的纤程向下执行。
*
* 为了防止竞争,每个条件变量都需要一个Lock的配合(Lock可自行显式创建并传递进来,也可交由fibjs为您创建)
*
* 通过使用条件变量,可以利用一个条件变量控制一批纤程的开关;
*
* 以下是两个纤程调度的实例:
* ```JavaScript
* var coroutine = require("coroutine");
* var cond = new coroutine.Condition();
* var ready = false;
* var state = "ready";
*
* function funcwait() {
* cond.acquire();
* while (!ready)
* cond.wait();
* state = "go"
* cond.release();
* }
*
* coroutine.start(funcwait);
*
* cond.acquire();
* console.log(state)
* ready = true;
* cond.notify();
* coroutine.sleep();
* console.log(state);
* ```
* will output:
* ```sh
* ready
* go
* ```
*
*/
declare class Class_Condition extends Class_Lock {
/**
* @description 条件变量构造函数(条件变量所需的锁由fibjs内部构造)
*/
constructor();
/**
* @description 条件变量构造函数
* @param lock 使用自行构造的锁
*
*/
constructor(lock: Class_Lock);
/**
* @description 使纤程进入阻塞状态
*/
wait(): void;
/**
* @description 通知一个被阻塞的纤程(最后加入纤程池的)向下继续执行
*/
notify(): void;
/**
* @description 通知所有被阻塞的纤程向下继续执行
*/
notifyAll(): void;
}