xmlInitParser 和 xmlCleanupParser 使用详解

本文详细介绍了libxml2库中xmlInitParser和xmlCleanupParser两个接口在单线程和多线程环境下的使用方法。在单线程环境中,xmlInitParser可调用多次,但推荐只在程序入口调用一次,而xmlCleanupParser应在程序退出时调用。多线程环境下,xmlInitParser需在主线程、线程开始前调用一次,而xmlCleanupParser应在所有线程结束、程序退出时在主线程调用,避免线程安全问题。
摘要由CSDN通过智能技术生成

使用libxml2库的朋友,可能会对它提供的初始化接口(xmlInitParser )和清除资源接口(xmlCleanupParser )感到困惑.因为在它主页中提供的例子里面,各处使用的情况差别很大. 我花了些时间把这两个接口使用方法整理如下:

1. 在单线程(single-threaded)环境中

   xmlInitParser 可以被调用一次,或者被调用多次(多于一次),甚至可以不被调用.

   对于第一种情况,很容易理解,因为接口作用是初始化,而且应该在程序的入口处调用. 这也是推荐的使用方法.

   对于第二种情况,看其接口的实现代码就很容易理解,第二次以后的调用只是判断完标志位后简单地返回.

   --------------------------------------------------------------------------------

   void xmlInitParser(void) {
    if (xmlParserInitialized != 0)
        return;

   //do initialization for xml library
   …

    xmlParserInitialized = 1;
   }

   --------------------------------------------------------------------------------

   对于第三种情况,在作者在mailing list的回答中可找到答案,而且这一点我也已经简单地通过例子验证过.而且在libmxl2自带的很多sample中,都是属于这样的情况.

   --------------------------------------------------------------------------------

  

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值