#async-networking #synchronization #tokio #context #familiar #paradigms #p2p

无需std netbeam

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

6个版本 (破坏性更新)

0.8.0 2024年4月10日
0.7.0 2023年10月4日
0.6.0 2023年10月4日
0.5.0 2023年5月1日
0.3.0 2023年1月18日

#888网络编程


3 个crate中使用(2个直接使用)

MIT/Apache

190KB
4K SLoC

netbeam

这是一个使用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> 首先计算 AND Result<r_a> = Ok(r_a),则将 Result<r_a> 返回给 A;如果 Result<r_b> 首先计算 AND Result<r_b> = Ok(r_b),则将 Result<r_b> 返回给 B。如果两个节点都失败,则返回全局错误。

NetMutex:两个节点之间以同步方式共享内存的互斥算法 NetRwLock:允许两个节点之间有一个写者或多个读者

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

依赖项

~4–14MB
~155K SLoC