///
///
/**
* @description 纤程信号量对象
*
* 信号量对象管理一个内部计数器,此计数器调用 acquire 或者 wait 后减一,调用 release 或者 post 后加一。
* 计数器不会减至负数,因为 acquire 和 wait 在发现数值为 0 的时候,会休眠当前纤程,直至其它纤程通过 release 或 post 增加计数器的值。
*
* 信号量常用的场合是限制资源并发使用,以及生产者/消费者模式的应用。
*
* 以数据库请求为例,限制资源并发使用的情形:
* ```JavaScript
* var maxconnections = 5;
* var l = new coroutine.Semaphore(maxconnections);
*
* ......
*
* l.acquire();
* var conn = connectdb()
* .....
* conn.close();
* l.release();
* ```
*
* 生产者/消费者模式通常则将信号量与队列配合使用。生产者向队列中加入数据,并 post 一个信号,消费者则先 wait 信号,获取信号后去队查询取数据。
*
*
*/
declare class Class_Semaphore extends Class_Lock {
/**
* @description 信号量构造函数
* @param value 计数器初始数值
*
*/
constructor(value?: number);
/**
* @description 等待一个信号量,等同于 acquire(true)
*/
wait(): void;
/**
* @description 释放一个信号量,等同于 release()
*/
post(): void;
/**
* @description 尝试获取一个信号,如不能获取,则立即返回并返回 false,等同于 acquire(false)
* @return 获取成功则返回 true
*
*/
trywait(): boolean;
}