
php小编子墨发现,在使用cgo时,有时会遇到一个问题,即`__GI___pthread_mutex_unlock`占用了大部分的执行时间。这个问题可能会导致性能下降,影响程序的运行效率。为了解决这个问题,我们需要深入了解`__GI___pthread_mutex_unlock`的作用和原理,并找到相应的优化方法。本文将对这个问题进行详细解析,帮助读者更好地理解并解决这个问题。
我正在使用 cgo 从 go 调用 c 函数。 c 函数内部有一个 go 函数的回调。换句话说,我调用 go -> c -> go。
运行 pprof 后,我注意到 __gi___pthread_mutex_unlock 占用了一半的执行时间。 afaik,cgo 有开销,尤其是从 c 回调到 go。但奇怪的是,cgo 花费了一半的执行时间来进行一些锁定。我的代码有问题吗?
main.go
callback.go
运行环境:
fankuan8-宾馆酒店行业网商务系统 V201205采用主流的Asp+Access开发设计,更大气,更漂亮!占用空间小,速度快,后台一站式管理,功能全部开源。网站浏览器兼容性也比较好,网站功能方面的细节方面十分强大。 本次升级修复了一些系统问题,以及一些浏览器兼容的问题;后台添加了完善的订单管理系统,这是上个版本所没有的;网站前台开始使用了fankuan8独立开发的互助链系统,开始使用时,在网
3
lscpu
go语言版本
65bcae9650aa这是 pprof 结果:
编辑:添加运行环境
虽然我无法用上面的程序重现它:
65bceaa20ecf但是有一个 对于每个回调都有全局互斥体,因此如果您进行并行回调,则会降低性能。
以上就是go - 使用 cgo 时,`__GI___pthread_mutex_unlock` 占用大部分执行时间的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号