TBY's Blog
Cairo的多线程支持依旧不给力
用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
你相信一个使用了静态数据结构的库是线程安全的么???不管你信不信,我反正信了!!