5 个版本
使用旧的 Rust 2015
0.2.1 | 2018年4月7日 |
---|---|
0.2.0 | 2018年3月26日 |
0.1.2 | 2018年3月21日 |
0.1.1 | 2018年3月19日 |
0.1.0 | 2018年3月14日 |
#1480 in 异步
14KB
312 行
futures-shuttle
面向 futures 的穿梭同步对象
为在两个异步任务之间共享值创建一个新的穿梭同步对象。每个部分可以分别拥有并发送到任务中。
示例
extern crate futures;
extern crate futures_shuttle;
use std::thread;
use futures_shuttle::shuttle;
use futures::*;
fn main() {
let (mut left, mut right) = shuttle(42);
assert!(left.is_mine());
assert!(!right.is_mine());
assert_eq!(left.get(), 42);
left.set(84);
left.send();
assert!(!left.is_mine());
assert!(right.is_mine());
assert_eq!(right.get(), 84);
}
lib.rs
:
基于 futures 的穿梭
一个通道,用于在两个异步任务之间往返传输单个对象/消息。与互斥锁或锁不同,穿梭始终属于两个任务之一。在特定时刻拥有 Shuttle
控制的方面可以操作其内容并将其发送到另一端。此时控制权转移到另一端,原始端失去访问 Shuttle
对象的能力。然而,它可以等待 Shuttle
从轨道的另一端返回,然后恢复访问。
依赖关系
~1MB
~17K SLoC