美文网首页Go
select I/O多路复用

select I/O多路复用

作者: cx7 | 来源:发表于2018-12-03 00:26 被阅读0次

    select

    golang的并发模型和linux select类似
    golang提供了select关键字,实现I/O的多路复用
    linux select的模型大致是以下这样 :

    while (true) {
          init_select_fd(); //初始化监听的fd
          int ret = select(); //select阻塞式监听
         if (...) { //if有fd被触发
             ...//处理fd的事件
         }
    }
    

    golang select模型有类似的结构 监听的是管道

    while (true) {
        switch {
        case variable := <-chan1 :
            ...//处理管道1事件
            break;
        case variable := <-chan1 :
            ...//处理管道2事件
            break;
        default:
            break;
        }
    }
    

    golang的select接口 底层的实现应当也是类似于linux select的
    每一个管道在创建时 被加入到监听列表中 一旦有事件触发 则触发对应监听器

    相关文章

      网友评论

        本文标题:select I/O多路复用

        本文链接:https://www.haomeiwen.com/subject/jvajcqtx.html