libxml++在多線程安全中的問題經驗總結

本處經驗很簡單,但是確實是困擾我們一個星期的問題。感謝解決該問題的同仁愿意將此經驗共享出來,以方便后來者。

libxml++是在linux平臺下,C++語言工具里一個比較方便、易用的xml工具。雖然其功能不如xerces強大,但是其也有體積小,兼容libxml2的優勢。眾所周知,libxml2是linux平臺下C語言中大量應用的xml工具,幾乎是這方面的標準。

 不過盡管libxml++文檔也算豐富,但是其在多線程下是否正確,之前還真未測試。

在實際項目中的經驗發現,libxml++還是多線程安全的。只不過對其使用方式上要注意。一開始在項目中,我們是在子進程中用dlopen打開libxml++的,發現會出現一些莫名其妙的問題,比如,libxml++報告無法找到根節點。眾所周知,在libxml++中,無法找到根節點的情況非常少見,基本沒有,所以懷疑其線程安全。后來通過調試和觀察,發現其他地方使用libxml++的時候都是通過編譯器靜態鏈接進來的,隨懷疑其是由于子進程中進行的動態庫載入才會出現問題。改在主進程中進行動態載入,問題解除。

像這種開源的代碼,恐怕作者非常清楚其線程安全性和使用注意事項。但是畢竟是開源產品,其文檔并未寫明,示例代碼也非常簡單。再評估期,由于種種原因,也沒有做如此深入的評估。后期隨著該工具應用的逐步深入,他是否會體力不支?這都是無法預測。所幸,libxml++現在看來還是非常健壯的。:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值