終於被我找到了

2021-04-01 17:01:00 字數 1146 閱讀 9880

一直在考慮vc6自帶的stl和他自己的容器類是不是執行緒安全的,安全到我拿多個執行緒,這邊寫那邊讀,這邊寫那邊寫都可以不考慮會不會出現race condition,我測了幾把竟然都能得到正確的結果,鬱悶~,終於發現了一篇文字如下:

在所有的主流

stl實現方案中,幾乎所有的容器都是執行緒安全的

:1).

乙個執行緒讀寫乙個例項時,另乙個執行緒可以讀寫另乙個例項。

2).多個執行緒可以在同時讀同乙個

container

。3).

多個執行緒寫同乙個

container

時,你應該負責安排互斥性操作。

乙個特例是

std::string

。在一些

stl的實現廠商(包括

ms vc6

),使用的是帶引用計數的

string!

這就意味著可能有兩個

std::string

的例項共享著同一塊底層資料。這使得前面說的第乙個規則被打破

!看一下這樣的**:

string s1= 「abcd」;

string s2 = s1;

在引用計數的實現版本中,這幾句話意味著:先分配一塊記憶體給

」abcd」

,乙個引用計數的數;s1和

s2都將引用這塊記憶體,引用計數將為

2。引用計數的本意是在把

strings

傳出functions

時優化copy

行為。但是這種演算法並不是執行緒安全的

!如果你將

s2傳給另乙個執行緒,那麼就很可能有兩個執行緒企圖修改這同一塊記憶體

!那將會有不可預料的行為發生。

理論上,你可以在兩個執行緒之間增加執行緒同步,但是這個同步的代價將會大於你從引用計數中獲得的好處

!這就是為什麼主流的

stl廠商不再使用引用計數的原因。比如,

dinkumware stl shipped with vc7

。看來還完全是執行緒安全的,look第三條,還是要你自己拿自己的同步物件來鎖下~:),雖然我找不到可以證明的例子,但還是安全第一,要麼自己寫個list什麼的,要麼就好好鎖一鎖

終於找到了 NuGet 修改包路徑

nuget 是 net 平台下的乙個免費 開源的包管理開發工具。如果 nuget.config 不存在,也可以在 c program files x86 nuget config 目錄下新建乙個 nuget.config,將該資料夾中的 microsoft.visualstudio.offline....

as3中matrix 解釋,終於找到了

看到標題也許非常多數學不好或中學時上課打盹的朋友會感到反感,但放心的是在這裡的matrix已簡化了非常多瑣碎的步驟,也不用大家拿一張紙拼命的做計算。對想製作遊戲的朋友也是必學的路程,所以大致上明白了運用的思路就能說掌控了技巧。在字典中的說明不夠充分讓大家去理解,所以開始還是要重複說明一下。matri...

終於找到了最新的Chemdarw註冊碼

隨著中國人對智財權的保護意識提公升,正版軟體越來越流行,只有一小部分人還在尋找chemdarw破解版。最新的chemdraw 15正式版本已經強勢來襲,在獲取軟體安裝包之後需要有效的註冊碼才能啟用軟體,啟用碼是開啟軟體的鑰匙。但是網際網路上的資訊魚龍混雜,特別是破解版本更容易隱藏安全隱患,那麼該如何...