libxml 在多執行緒安全中的問題經驗總結

2021-04-12 15:25:51 字數 647 閱讀 2627

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

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

不過儘管libxml++文件也算豐富,但是其在多執行緒下是否正確,之前還真未測試。

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

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

(多執行緒)多執行緒的併發安全

多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...

多執行緒中的執行緒安全問題

問題描述 某段 在沒有執行完成的時候,cpu就可能被其他執行緒搶走,結果導致當前 中的一些資料發生錯誤 原因 沒 某段 的執行的完整性 原子性 希望 這段 要麼全都執行,要麼全都沒有執行 前面模擬售票的都是執行緒安全問題 同步 塊 使用一種格式,達到讓某段 執行的時候,cpu不要切換到影響當前 的 ...

多執行緒的安全

資源共享 1.一塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 2.比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒引用同乙個資源,會引發問題 implementation viewcontroller void viewdidload void touches...