我可以从多个异步网络调用中调用libxml解析器吗?

时间:2010-09-29 04:27:29

标签: iphone objective-c ipad

我有一段代码使用NSURLConnection异步获取网络资源并在流入时解析一些XML.XML解析由libxml2处理,libxml2可作为iOS SDK中的框架使用。当我调用它一次,解析XML并通过调用xmlFreeParserCtxt(ctxt)释放资源时,这非常有效。

我的问题是,当我在多个线程中运行相同的代码时,我突然看到EXC_BAD_ACCESS弹出,我追溯到libxml2。具体来说,初始化并用于XML解析的xmlParserCtxtPtr上下文似乎在我完成检索资源后释放它时抛出EXC_BAD_ACCESS。 如果我不释放这个上下文,即调用xmlFreeParserCtxt(ctxt),那么例外就会消失。

这让我相信我的问题与iOS中可用的libxml框架有关,而不是线程安全。

果然,当我谷歌问题时,我看到了这一点: 来自:http://xmlsoft.org/threads.html

  

从2.4.7开始,libxml2规定确保并发线程可以安全地并行解析不同的文档。但是要确保它可以做几件事:

* configure the library accordingly using the --with-threads options
* call xmlInitParser() in the "main" thread before using any of the libxml2 API (except possibly selecting a different memory allocator)

所以我有两个问题: 1.)我的假设是正确的,我使用的libxml版本不是线程安全的,因此导致问题?有没有人见过这个? 2.)我知道iOS捆绑libxml2.2.x - 如果我得到libxml2.4.7并将其添加到我的项目中它会工作吗?这会导致对应用商店的任何拒绝吗?

感谢您的时间。

0 个答案:

没有答案
相关问题