加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang

发布时间:2020-12-16 19:14:10 所属栏目:大数据 来源:网络整理
导读:如果tcp.cond在2个go程里面同时read数据,会发生什么情况? package mainimport( "net" "fmt")func main(){ l,_ := net.Listen("tcp",":8888") for { conn,_ := l.Accept() go func(c net.Conn) { for{ b := make([]byte,128) n,err := c.Read(b) if err !=

如果tcp.cond在2个go程里面同时read数据,会发生什么情况?

package main


import(
    "net"
    "fmt"
)

func main(){
    l,_ := net.Listen("tcp",":8888")
    for {
        conn,_ := l.Accept()
        go func(c net.Conn) {
            for{
                b := make([]byte,128)
                n,err := c.Read(b)
                if err != nil{
                    break
                }
                fmt.Println("caaaaaaaaaaaaaaaaaaaaa",string(b),n,err)
            }
        }(conn)

        go func(c net.Conn) {
            for{
                b := make([]byte,err := c.Read(b)
                if err != nil{
                    break
                }
                fmt.Println("ccccccc",err)
            }
        }(conn)
    }

}

结论是:只有一个go程会被唤醒。 猜想到的,因为go是多线程,所以每个线程里面有一个epoll。故每个线程里面的epoll可能都会监听了该fd的事件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读