Cairo的多线程支持依旧不给力 - TBY's Blog

Cairo的多线程支持依旧不给力

TBY posted @ 2013年2月01日 11:16 in 杂谈 with tags Cairo , 1814 阅读

用Haskell写了个小程序,整合了2种miRNA靶基因预测算法,并设计了图形化展示 方案,但发现性能瓶颈在Cairo绘制上,于是尝试并发写pdf,结果是令人沮丧的:

 

testIO: cairo-hash.c:506: _cairo_hash_table_lookup_exact_key: Assertion `!"reached"' failed.
已放弃(吐核)
 
尝试了替换forkIO为forkOS,bug依旧。Haskell程序难以获得完整的栈追踪信息,不过好在这是个assertion failure,有详细的提示,查阅了源文件以后,发现cairo使用了一个静态数据结构来计数。。。囧。。。要知道cairo 1.12.10的release note上可是提到了大幅改进多线程友好度的噢。

 

其他互联网上与该bug相关的帖子:

1. 2010年的:http://lists.cairographics.org/archives/cairo/2010-December/021321.html

2. 2013年的:http://comments.gmane.org/gmane.comp.lib.cairo/23497

 

你相信一个使用了静态数据结构的库是线程安全的么???不管你信不信,我反正信了!!

Avatar_small
rca 说:
2013年2月02日 10:53

嗯,前段时间我用 poppler + cairo 的时候,也遇到了问题。两个线程分别将两份不同的 pdf 页面渲染为 cairo 图像时,程序就时不时的会崩掉。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee