#future #waiter #sequential #futures-aware #notifications #turn #turnstyle

futures-turnstyle

面向未来的turnstyle式,顺序通知给等待者

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

conduct-badge travis-badge docs-badge license-badge

面向未来的turnstyle式,顺序通知给等待者。

许可

根据MIT许可(LICENSEhttp://opensource.org/licenses/MIT


lib.rs:

Turnstyles是一种以顺序方式提供面向未来的门控访问的方法。

调用者将“加入”队列,并在通过turnstyle时接收到一个将完成的未来。turnstyle由外部协调器控制,可以“旋转”它以让下一个等待者在队列中通过。因此,您可以拥有多个等待者,它们可以随时加入队列,并允许协调器不断地接纳他们。

这可以用来同步对资源的访问,或提供一个同步点以重复计算。

一个例子是网络守护进程,它重新加载其配置并重新建立其所有监听套接字。通常,您可能会(使用select)同时加入监听套接字未来和关闭未来,以便在不再需要套接字时关闭它。

使用turnstyle,您可以在每次重新加载配置时都加入队列,然后将与所有新创建的监听器共享该未来。一旦新监听器准备就绪,您还可以在turnstyle上执行一次“旋转”,这会向队列中的最后一个等待者——与所有旧监听器共享的未来——发出信号,它们现在可以关闭。同一个turnstyle可以不断执行此操作而不会出现问题。

Turnstyles通过Mutex内部保护自己,但在正常情况下足够快,您可以从未来内部安全地执行jointurn,而不用担心使执行器停滞。如果您以极高的频率加入,您可能会造成性能下降。

依赖关系

~53KB