#shuttle #同步 #future

futures-shuttle

面向 futures 的穿梭同步对象

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 异步

MIT/Apache

14KB
312

futures-shuttle

Build status

面向 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