脚本开发

模块 ringo/concurrent

用于处理多个同时运行的线程的实用程序。

Class Semaphore

Instance Methods


Semaphore (permits)

计数信号量,可用于协调和同步同步线程之间的协作。信号量保存许多许可证。

请注意,Worker 事件通常在本地事件循环的单线程中运行,因此不需要由信号量提供同步。唯一的情况是,如果您想为 worker 使用信号量,则将 syncCallbacks 标志设置为 Worker.postMessage() 的第二个参数,因为这会导致 worker 的回调在其自己的线程中运行,而不是在事件循环中运行。

为了使用信号量同步线程,线程可以使用 waittryWait 方法请求一个或多个许可。如果所需的许可证数量可用,它们将从信号量中的许可证数量中减去,并且方法立即返回。

如果请求的许可数量不可用,wait 和 tryWait 方法会阻塞,直到另一个线程使用 signal 方法添加所需的许可证,或者在 tryWait 的情况下,指定的超时将到期。

Parameters

Number permits

the number of initial permits, defaults to 0


Semaphore.prototype. signal (permits)

向信号量添加一个或多个许可证。

Parameters

Number permits

the number of permits to give, defaults to 1


Semaphore.prototype. tryWait (timeout, permits)

在给定的时间范围内等待一个或多个许可证。如果在超时过去之前可以获取请求的许可证,则返回 true。

Parameters

Number timeout

The span of time to wait, in milliseconds

Number permits

the number of permits to wait for, defaults to 1

Returns

true if the requested permits could be acquired, false if the timeout elapsed


Semaphore.prototype. wait (permits)

等待一个或多个许可证。

Parameters

Number permits

the number of permits to wait for, defaults to 1