V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
1iveHO0k
V2EX  ›  分享创造

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

  •  
  •   1iveHO0k ·
    archerfeel · 2018-01-10 22:29:50 +08:00 · 3178 次点击
    这是一个创建于 2513 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚学 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);
    }
    
    2 条回复    2018-01-10 23:31:20 +08:00
    noli
        1
    noli  
       2018-01-10 23:23:12 +08:00
    reactor 模式?
    我第一次看 C++ 上的 ACE 这种库的时候就觉得什么 reactor proactor 等等的字眼没前途,
    不是一个深思熟虑和足够抽象(并且恰当地抽象)的概念。

    或许我是错的,但比起 promise, future 等等常见的异步 pattern,reactor 模式有什么好处?
    1iveHO0k
        2
    1iveHO0k  
    OP
       2018-01-10 23:31:20 +08:00
    @noli 额.. 这是不同维度的概念吧, reactor/proactor 是 IO 模型的实现; promise 和 future 这个一种异步方式吧? 我也说不太准确, 但这确实不是一个维度的概念, 写一个 reactor 模式的库也能做成 future 形式.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1432 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:23 · PVG 01:23 · LAX 09:23 · JFK 12:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.