V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xmf1234321
V2EX  ›  程序员

求助 golang 大佬

  •  
  •   xmf1234321 · 2021-01-07 14:50:31 +08:00 · 1876 次点击
    这是一个创建于 1424 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在写 go 练手,前两天在看知乎一帖子 golang 实现内网穿透 跑代码发现 windows 跑的 client 没问题 mac 上面运行 client io.Copy 方法卡住 io.Copy 做的操作是并发执行两个 tcp 链接的拷贝工作 类似同时执行两个 io.Copy(local, remote) 卡在这里,也没有 error 输出 直到 tcp 断了才报错 有大佬知道是为啥么

    6 条回复    2021-01-08 01:01:26 +08:00
    lwch
        1
    lwch  
       2021-01-07 14:55:06 +08:00
    go 里的所有 io.Read 和 io.Write 操作都是阻塞操作,因为需要让出时间片给别的协程调度
    xkeyideal
        2
    xkeyideal  
       2021-01-07 14:59:38 +08:00
    go io.Copy(local, remote)
    go io.Copy(remote, local)
    xmf1234321
        3
    xmf1234321  
    OP
       2021-01-07 15:20:40 +08:00
    @lwch 大概明白您说的意思 但是不会改 哈哈
    xmf1234321
        4
    xmf1234321  
    OP
       2021-01-07 15:20:56 +08:00
    @xkeyideal 嗯呢 就是这样写的 但是都执行不下去 windows 没问题
    xkeyideal
        5
    xkeyideal  
       2021-01-07 15:30:36 +08:00
    @xmf1234321 那就只能看代码了
    fuse
        6
    fuse  
       2021-01-08 01:01:26 +08:00 via iPhone
    @lwch 因为等待数据才挂起,因果颠倒
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2564 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:16 · PVG 18:16 · LAX 02:16 · JFK 05:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.