【发布时间】:2017-06-01 01:56:44
【问题描述】:
根据this关于多线程的文档,在并发使用库之前必须调用xmlInitParser()。这就是问题所在。我使用 libxml2 编写了一个库(不是可执行文件),它应该保证并发性。所以我决定在我的库的 init 函数上调用 init 函数。但是,the document 表示该函数不可重入。因此,如果其他库或链接我的库的程序事先调用该函数可能会出现问题。
我找不到检查解析器(或者我应该说是 libxml2)是否已初始化的函数或方法。我该怎么办?不顾一切地调用函数并希望最好?在我发布这个之后,我将测试该函数是否是可重入的,但这并没有真正符合。
为了澄清,总结一下:
-
xmlInitParser()真的是可重入的吗? - 有什么方法可以检查 libxml2 是否已初始化?
- (或)如何在另一个软件也可以同时使用 libxml2 的前提下安全地同时使用它。
【问题讨论】:
-
邮件列表似乎不是很活跃,所以我在这里问。
-
你能在任何线程产生之前在主程序中调用它吗?这就是我记得使用 libxml2 时所做的事情。
-
Nitpick:即使不是可重入的,也可能会被连续调用几次。
-
“可重入”并不是我想的那样。我是多么的无知。
标签: c multithreading unix libxml2