5个版本 (3个主要更新)
使用旧的Rust 2015
3.0.0 | 2018年10月9日 |
---|---|
2.0.1 | 2018年10月9日 |
1.0.0 | 2018年10月3日 |
0.1.0 | 2018年6月30日 |
#4 in #futures-aware
13KB
196 行
futures-turnstyle
面向未来的turnstyle式,顺序通知给等待者。
许可
根据MIT许可(LICENSE 或 http://opensource.org/licenses/MIT)
lib.rs
:
Turnstyles是一种以顺序方式提供面向未来的门控访问的方法。
调用者将“加入”队列,并在通过turnstyle时接收到一个将完成的未来。turnstyle由外部协调器控制,可以“旋转”它以让下一个等待者在队列中通过。因此,您可以拥有多个等待者,它们可以随时加入队列,并允许协调器不断地接纳他们。
这可以用来同步对资源的访问,或提供一个同步点以重复计算。
一个例子是网络守护进程,它重新加载其配置并重新建立其所有监听套接字。通常,您可能会(使用select
)同时加入监听套接字未来和关闭未来,以便在不再需要套接字时关闭它。
使用turnstyle,您可以在每次重新加载配置时都加入队列,然后将与所有新创建的监听器共享该未来。一旦新监听器准备就绪,您还可以在turnstyle上执行一次“旋转”,这会向队列中的最后一个等待者——与所有旧监听器共享的未来——发出信号,它们现在可以关闭。同一个turnstyle可以不断执行此操作而不会出现问题。
Turnstyles通过Mutex
内部保护自己,但在正常情况下足够快,您可以从未来内部安全地执行join
或turn
,而不用担心使执行器停滞。如果您以极高的频率加入,您可能会造成性能下降。
依赖关系
~53KB