go 语言对接 c 语言的问题

2020-04-29 14:29:36 +08:00
 xmge

项目背景:

刚刚入职的新公司,想要将之前的 c 语言的项目陆续改为 go 语言的。现在需要写一个 go 调用 c 的接口的实现方案。考虑过以下几个方面:

解决方案:

1 、c 语言搭建 http 服务,直接调用。

c 语言同事那边说,c 写的 http 服务,第一不稳定,第二性能差。遂放弃。

2 、用 linux 系统内消息队列进行通信。

之前的同事写了一般,但是 需要用到 cgo 调用 c 的命令来做,但是调用过程没办法设置超时时间,而且 cgo 调用类似于阻塞 IO,它们在操作期间消耗一个系统线程。性能也不会很好

相关技术文章: https://www.jianshu.com/p/7e3045cf1ab8

3 、用 gprc 来通信

这个协议很靠谱,之前也用过,但是在调研过程中公司之前环境上 C/C++ 无法编译一些 ProtoBuf 文件,公司同事说,这个也不用考虑了。

4 、zmq 通过 zmq 来进行系统间通信

通过一种无需安装服务的消息队列的方式,这个正在调研

5 、json-rpc

这个正在等同事的消息。

大佬们有没有什么建议呢?

3130 次点击
所在节点    程序员
22 条回复
Chenamy2017
2020-04-30 11:51:31 +08:00
说 C 写的 http 不稳定和性能差的我估计是说他自己写的代码吧。自己写当然差了,但是别人写的 nginx 就不一样了。
ddoocc
2020-04-30 14:47:48 +08:00
封装成 lib 直接调用啊,任何现代语言都兼容 c abi 。

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

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

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

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

© 2021 V2EX