使用 golang 在 mac 上进行开发,需要使用 epoll,因为 mac 上面没有 epoll。所以编译和测试都需要在 Linux 环境下进行。我用 vagrant 开了个 centos7 来做编译和测试环境,基本解决了问题。
但是,在编写代码的过程中,ide 还是会提示我找不到相应的系统调用。这还蛮不爽的。
大家有什么好的解决方法吗?
1
nonkr 2018-05-17 12:20:53 +08:00 via iPhone 1
把需要的 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 1
首先, 你的代码肯定是要在 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
tulongtou 2018-05-17 14:10:11 +08:00
golang 怎么用 epoll 啊
|
7
mashiro233 2018-05-17 15:41:15 +08:00 1
@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 感谢,学习了。
|