8 个版本

0.3.4 2024 年 6 月 26 日
0.3.3 2024 年 6 月 26 日
0.3.1 2023 年 10 月 15 日
0.2.3 2023 年 7 月 25 日
0.1.2 2023 年 4 月 19 日

Rust 模式 中排名 2003

Download history 222/week @ 2024-06-23 47/week @ 2024-06-30 65/week @ 2024-07-28

每月下载量 65

MIT/Apache

62KB
1.5K SLoC

sod-mpsc

sod::Service 实现与 std::sync::mpsc::channel 队列交互。

服务实现

  • MpscSenderstd::sync::mpsc::channel 发送消息。
  • MpscSyncSenderstd::sync::mpsc::sync_channel 发送消息,如果通道已满则阻塞。
  • MpscSyncTrySender 尝试向 std::sync::mpsc::sync_channel 发送消息,如果通道已满,则可以通过 sod::RetryService 重试。
  • MpscReceiverstd::sync::mpsc::channelstd::sync::mpsc::sync_channel 接收消息,直到接收到一个元素为止,会阻塞。
  • MpscTryReceiver 尝试从 std::sync::mpsc::channelstd::sync::mpsc::sync_channel 接收,当通道为空时,可以通过 sod::Retryable 进行重试。

示例

use sod::Service;
use sod_mpsc::{MpscSender, MpscReceiver};
use std::sync::mpsc;

let (tx, rx) = mpsc::channel();
let pusher = MpscSender::new(tx);
let poller = MpscReceiver::new(rx);

pusher.process(1).unwrap();
pusher.process(2).unwrap();

assert_eq!(poller.process(()).unwrap(), 1);
assert_eq!(poller.process(()).unwrap(), 2);

依赖

~235–680KB
~16K SLoC