
使用 golang 在 mac 上进行开发,需要使用 epoll,因为 mac 上面没有 epoll。所以编译和测试都需要在 Linux 环境下进行。我用 vagrant 开了个 centos7 来做编译和测试环境,基本解决了问题。
但是,在编写代码的过程中,ide 还是会提示我找不到相应的系统调用。这还蛮不爽的。
大家有什么好的解决方法吗?
1 nonkr 2018-05-17 12:20:53 +08:00 via iPhone 把需要的 linux 上的头文件拷贝到 mac 上 |
2 liuminghao233 2018-05-17 12:27:42 +08:00 via iPhone 我用 pd 装 ubuntu +clion |
3 TheCure 2018-05-17 12:38:44 +08:00 首先, 你的代码肯定是要在 linux 上跑的, 所以你必须要一个虚拟机. 然后 goland 配置 go remote, remote run 和 debug |
4 jam1024 2018-05-17 12:38:57 +08:00 装个 docker |
5 wangfengmadking 2018-05-17 12:57:00 +08:00 docker & docker-compose +1 |
6 DonaidTrump 2018-05-17 14:10:11 +08:00 golang 怎么用 epoll 啊 |
7 mashiro233 2018-05-17 15:41:15 +08:00 @tulongtou 引入标准库 syscall 就可以了 `syscall.EpollCtl`。 不过还是有点好奇楼主是在什么样的需求下需要直接上 epoll,因为在我印象里直接用 goroutine 处理并发就够好用了。 |
8 bigtom OP @mashiro233 其实也没啥需求,自己瞎搞着玩儿。 同意其实绝大多数情况下 goroutine 处理并发就够好用了。但是 epoll 和 goroutine 并不是一个层面上的事情。goroutine 是计算能力上的并行,而 epoll 负责搞定异步 io。一般情况下我们可以给每个请求开一个 goroutine 处理,并在处理结束后销毁这个 goroutine。但是如果要维持大量的长连接(websocket 服务器等),却给每个长连接都起一个 goroutine 等着就蛮浪费的。可以参考这篇文章 https://medium.freecodecamp.org/million-websockets-and-go-cc58418460bb |
10 mashiro233 2018-05-17 21:19:54 +08:00 via Android @bigtom 感谢,学习了。 |