當前位置:編程學習大全網 - 源碼下載 - List是線程安全的嗎?如果不安全,怎麽會變得安全?

List是線程安全的嗎?如果不安全,怎麽會變得安全?

妳說的是java還是C++?

在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.多次寫入不同的容器是安全的。多個線程可以同時寫入不同的容器。請註意,這是壹個不同的容器。

所以妳要為容器寫壹個模板類來實現鎖定(構造時鎖定,析構時釋放),然後在訪問容器時定義這個類的壹個臨時變量。臨時變量可以確保如果拋出異常,臨時對象也將被銷毀,從而釋放鎖。

  • 上一篇:如何打開php文件
  • 下一篇:OpenGl是什麽?
  • copyright 2024編程學習大全網