#networking #synchronization #context #familiar #tokio #paradigms #asynchronous

nightly net_sync_tokio

一个使用 tokio 的纯 Rust 异步网络同步 crate,重新创建了熟悉的异步范式,但在网络环境中。

4 个版本

0.2.1 2021 年 8 月 15 日
0.2.0 2021 年 8 月 15 日
0.1.1 2021 年 8 月 13 日
0.1.0 2021 年 8 月 13 日

#4 in #paradigms

自定义许可证

99KB
2K SLoC

net_sync

这是一个使用 tokio 的纯 Rust 异步网络同步 crate,它重新创建了熟悉的异步范式,但是在网络环境中。

AB 为两个彼此之间有预先建立的有序+可靠连接的节点(例如,通过 TCP、TLS、QUIC 等)

  • join 给定 A 执行函数 f_a -> r_aB 执行函数 f_b -> r_b,将 r_a 返回给 A,将 r_b 返回给 B
  • try_join 给定 A 执行函数 f_a -> Result<r_a>B 执行函数 f_b -> Result<r_b>,如果 Result<r_a> = Ok(r_a) AND Result<r_b> = Ok(r_b),则将 Result<r_a> 返回给 A,将 Result<r_b> 返回给 B。如果一个节点失败,则返回全局错误。
  • select 给定 A 执行函数 f_a -> r_aB 执行函数 f_b -> r_b,如果 r_a 首先被计算,则将 r_a 返回给 A;否则,如果 r_b 首先被计算,则将 r_b 返回给 B
  • try_select 给定 A 执行函数 f_a -> Result<r_a>B 执行函数 f_b -> Result<r_b>,如果 Result<r_a> 首先被计算并且 Result<r_a> 等于 Ok(r_a),则将 Result<r_a> 返回给 A;否则,如果 Result<r_b> 首先被计算并且 Result<r_b> 等于 Ok(r_b),则将 Result<r_b> 返回给 B。如果两个节点都失败,则返回全局错误。

NetMutex:两个节点之间以同步方式共享内存的互斥算法

此外,还有一个 sync_start 文件,它允许两个操作在大约相同的时间同步。每个操作的示例都在 src/sync/[...] 下的源代码中。

将来,这个包将包括一个 NetRwLock 抽象

依赖项

~5–14MB
~165K SLoC