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,它重新创建了熟悉的异步范式,但是在网络环境中。
设 A
和 B
为两个彼此之间有预先建立的有序+可靠连接的节点(例如,通过 TCP、TLS、QUIC 等)
- join 给定
A
执行函数f_a -> r_a
和B
执行函数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)
ANDResult<r_b> = Ok(r_b)
,则将Result<r_a>
返回给A
,将Result<r_b>
返回给B
。如果一个节点失败,则返回全局错误。 - select 给定
A
执行函数f_a -> r_a
和B
执行函数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