GM支持多线程问题排除
2013-09-17 12:11
148 查看
之前测试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的多线程。
只能逐一排查,
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的多线程。
相关文章推荐
- 多线程并发问题,定义支持单个写线程和多个读线程的锁
- Junit单元测试不支持多线程测试--原因分析和问题解决
- 关于android上引用js脚本 和rhino 多线程支持的问题
- linux 下mysql多线程支持问题
- linux 下mysql多线程支持问题
- 多线程后台语音播放系统,支持多声卡的问题
- PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法
- [泛读]C++程序跨平台、多线程支持和x64移植问题
- Setjmp的支持多线程问题
- Java多线程系列--“基础篇”11之 生产消费者问题
- 解决MSSQL全文检索不支持office2007,2010中docx等格式的问题
- 由一个多线程共享Integer类变量问题引起的。。。
- Servlet单实例多线程问题
- C++ 多线程编程解决CPU占用率高问题
- 关于c++/c#/java 多线程绘图问题说明
- java代码实现多线程消费者生产者问题。
- 跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题
- 多线程常见面试问题
- c#中使用多线程访问winform中控件的若干问题
- WCF热门问题编程示例(3):WCF是否使用或者支持IOCP完成端口(整理补充)