GM支持多线程问题排除

来源:互联网 发布:vb picturebox清空 编辑:程序博客网 时间:2024/04/26 10:36

之前测试GM处理图片,发现CPU总是上不去(8核,但是只能到100%)。

只能逐一排查,

1. 确认OPENMP开关是否打开

2. coder库是否支持threads(jpeg和tiff暂时不支持)

这些都没有问题。

GM库bug?切换不同的图片类型,发现JPEG都可以上200%,其它支持多核的可以上到800%。

范围缩小到png库了。

更新png库到16,发现支持透明图片有问题,,,先规避,,,压测,发现还是只能到100%,只能会说png库内部问题的可能性很小了。

查看coder png代理代码,发现有个宏控制了是否加锁:SETJMP_IS_THREAD_SAFE。当前centos63和rh54都是没定义这个宏,但是测试过程中是支持不同线程的栈切换和重入的。如果屏蔽png库中使用setjmp它出异常会直接abort。异常情况很少,另外测试是线程安全的,libpng本身宣称支持多线程,因为手工增加了这个宏定义来打开处理png的多线程。

原创粉丝点击