3

由于xmlCleanupParser()非常好的 libxml2 不是线程安全的,我的问题是(而且我无法检查出来),丢失了多少内存(粗略数字),xmlParseFile()并且 - 更重要的是 - 这种内存丢失是否会在多次调用中累积到xPF()

4

2 回答 2

3

尽管事实上,在 C < 11 中,该malloc()free()或任何内存处理实现不一定是线程安全的,但始终存在共享/全局内存的问题。只要它们是只读的,不同线程中同一文件的文件句柄就不会那么糟糕。

但是,从 libxml2 2.4.7 开始,您可能能够在 API 级别启用线程安全,每个文档的单个线程:http ://www.xmlsoft.org/threads.html

当我查看 libxml2 2.9.1 的源代码时,我确信线程安全已完全实现,尽管存在全局互斥锁,但还有一个原子分配功能。

下载:ftp: //xmlsoft.org/libxml2/

于 2013-08-24T10:37:10.500 回答
1

遵循meaning-matters给出的建议,并使用唯一的工具,我发现在OS2(这个古老的旧IBM操作系统)下检查内存,使用xCP()或选择不使用xCP()之间的内存丢失没有区别(为了我)。

于 2013-08-24T10:42:28.000 回答