用 rust 写了小半个 reactor 模式的 socket 库, 有感兴趣的小伙伴吗?

2018-01-10 22:29:50 +08:00
 1iveHO0k

刚学 rust, 很多特性和语法都不熟, 求大佬带.

Iryna: A lightweight network library based on mio

echo server demo:

use std;
use channel::*;
use acceptor::*;

#[test]
fn it_works() {
    Acceptor::new()
        .worker_count(4)
        .bind("127.0.0.1", 9098)
        .opt_nodelay(true)
        .opt_send_buf_size(4096)
        .opt_recv_buf_size(4096)
        .on_receive(|ref mut ch| {
            let s: String = ch.read_test();
            ch.write(s.as_bytes());
        })
        .on_ready(|ref mut ch| {
            ch.write("Welcome.\n".as_bytes());
        })
        .accept();
    std::thread::sleep_ms(100000);
}
3177 次点击
所在节点    分享创造
2 条回复
noli
2018-01-10 23:23:12 +08:00
reactor 模式?
我第一次看 C++ 上的 ACE 这种库的时候就觉得什么 reactor proactor 等等的字眼没前途,
不是一个深思熟虑和足够抽象(并且恰当地抽象)的概念。

或许我是错的,但比起 promise, future 等等常见的异步 pattern,reactor 模式有什么好处?
1iveHO0k
2018-01-10 23:31:20 +08:00
@noli 额.. 这是不同维度的概念吧, reactor/proactor 是 IO 模型的实现; promise 和 future 这个一种异步方式吧? 我也说不太准确, 但这确实不是一个维度的概念, 写一个 reactor 模式的库也能做成 future 形式.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421812

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX