求助 golang 大佬

2021-01-07 14:50:31 +08:00
 xmf1234321

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

1860 次点击
所在节点    程序员
6 条回复
lwch
2021-01-07 14:55:06 +08:00
go 里的所有 io.Read 和 io.Write 操作都是阻塞操作,因为需要让出时间片给别的协程调度
xkeyideal
2021-01-07 14:59:38 +08:00
go io.Copy(local, remote)
go io.Copy(remote, local)
xmf1234321
2021-01-07 15:20:40 +08:00
@lwch 大概明白您说的意思 但是不会改 哈哈
xmf1234321
2021-01-07 15:20:56 +08:00
@xkeyideal 嗯呢 就是这样写的 但是都执行不下去 windows 没问题
xkeyideal
2021-01-07 15:30:36 +08:00
@xmf1234321 那就只能看代码了
fuse
2021-01-08 01:01:26 +08:00
@lwch 因为等待数据才挂起,因果颠倒

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

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

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

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

© 2021 V2EX