2个不稳定版本
0.2.0 | 2024年4月30日 |
---|---|
0.1.0 | 2024年4月29日 |
#426 in 算法
6,955每月下载量
10KB
185 行
ordq
订单保持作业处理队列
示例
struct Add;
impl ordq::Work for Add {
type I = (i32, i32);
type O = i32;
fn run(&mut self, x: Self::I) -> Self::O {
x.0 + x.1
}
}
# fn test_jobq() {
let (tx, rx) = ordq::new(1024, vec![Add, Add]);
tx.send((1, 2));
tx.send((3, 4));
tx.close();
assert_eq!(rx.recv(), Some(Ok(3)));
assert_eq!(rx.recv(), Some(Ok(7)));
assert_eq!(rx.recv(), None);
assert_eq!(rx.recv(), None);
# }
lib.rs
:
订单保持作业处理队列。
此模块提供了一个多线程工作池,在处理任务的同时保持输出顺序。
示例
struct Add;
impl ordq::Work for Add {
type I = (i32, i32);
type O = i32;
fn run(&mut self, x: Self::I) -> Self::O {
x.0 + x.1
}
}
let (tx, rx) = ordq::new(1024, vec![Add, Add]);
tx.send((1, 2));
tx.send((3, 4));
tx.send((5, 6));
tx.close();
assert_eq!(rx.recv(), Some(Ok(3)));
assert_eq!(rx.recv(), Some(Ok(7)));
assert_eq!(rx.recv(), Some(Ok(11)));
assert_eq!(rx.recv(), None);
assert_eq!(rx.recv(), None);
依赖项
~0.6–1.1MB
~23K SLoC