最近在写 go 练手,前两天在看知乎一帖子 golang 实现内网穿透 跑代码发现 windows 跑的 client 没问题 mac 上面运行 client io.Copy 方法卡住 io.Copy 做的操作是并发执行两个 tcp 链接的拷贝工作 类似同时执行两个 io.Copy(local, remote) 卡在这里,也没有 error 输出 直到 tcp 断了才报错 有大佬知道是为啥么
1
lwch 2021-01-07 14:55:06 +08:00
go 里的所有 io.Read 和 io.Write 操作都是阻塞操作,因为需要让出时间片给别的协程调度
|
2
xkeyideal 2021-01-07 14:59:38 +08:00
go io.Copy(local, remote)
go io.Copy(remote, local) |
3
xmf1234321 OP @lwch 大概明白您说的意思 但是不会改 哈哈
|
4
xmf1234321 OP @xkeyideal 嗯呢 就是这样写的 但是都执行不下去 windows 没问题
|
5
xkeyideal 2021-01-07 15:30:36 +08:00
@xmf1234321 那就只能看代码了
|