在java中通常有兩種方法可以解決這個問題。
壹:使用synchronized關鍵字;
第二,使用collections . synchronized list();
假設您創建了以下代碼:list
所以為了解決這個線程安全問題,可以這樣使用Collections.synchronizedList()。
比如:
列表& lt地圖& lt字符串,對象& gt& gtdata = collections . synchronized list(new ArrayList & lt;地圖& lt字符串,對象& gt& gt());
只是換了新的關鍵詞,其他都沒變。有關用法,請參考api文檔。
C++中有兩種列表:
壹個是妳手動實現的列表數據結構,壹個是STL給妳封裝的。
如果妳是手動實現的,把源代碼發過來,我幫妳看看怎麽優化。
如果是stl
那妳就不能指望STL給妳線程支持,因為它要的是效率。
應該指出的是:
1.多線程讀取是安全的。多線程可以同時讀取壹個容器的內容。妳只能讀,不能寫。
2.多次寫入不同的容器是安全的。多個線程可以同時寫入不同的容器。請註意,這是壹個不同的容器。
所以妳要為容器寫壹個模板類來實現鎖定(構造時鎖定,析構時釋放),然後在訪問容器時定義這個類的壹個臨時變量。臨時變量可以確保如果拋出異常,臨時對象也將被銷毀,從而釋放鎖。