将cgo线程常驻内存
通过内存和go通信
因为c和go的堆栈不同
需要栈拷贝
频繁创建销毁线程导致性能下降
把go的对象丢到内存队列交给cgo
cgo处理完再丢回内存通道,go取走结果
性能即可提升
【 在 harmonica 的大作中提到: 】
: 有个应用用到C写的lib库,用Cgo调了下,高频次的调用性能惨不忍睹,大部分耗在Cgo调用了。看了下原理go调用C是比较特殊;有个方案是把C编译成汇编再转成Go的汇编,再直接编到go的二进制里去。可对于一个很大的lib,这个方法看上去就很麻烦了。有没有更好的方案?
:
--
FROM 114.241.236.*