STL執行緒安全

2021-04-27 21:29:25 字數 1196 閱讀 5242

由於需要,需要將乙個int陣列(vector)的內容寫入到貼上板中,最開始直接將vector作為clipboarddata寫入到站貼板,獲取正確,但是存在記憶體洩漏,經實驗,寫入list等stl容器資料都會存在該情況,估計是由於stl的執行緒安全性一起的。

解決方法:

1、搞個結構體,放陣列和大小,取的時候判斷一下大小再按大小取陣列內容。

2、將int資料先弄成string,然後在從貼上板讀取該資料後,再還原為int值。

寫入:coledatasource objdatasrc;

hglobal hglobal         = null;

char*   pszbuffer       = null;

formatetc  etc          = ;

//將index做成string(將vector直接寫入貼上板會導致記憶體洩漏。stl非執行緒安全)

cstring strindex    = "";

cstring strtmp      = "";

for(int nindex = 0 ; nindex < arr.size(); ++nindex)

}hglobal = globalalloc(ghnd, strindex.getlength() + 1);

if ( null == hglobal)

pszbuffer = (char*)globallock(hglobal);

if ( null == pszbuffer )

strcpy(pszbuffer, (lpcstr)(strindex));

globalunlock(hglobal);

objdatasrc.cacheglobaldata(uiformat, hglobal);

objdatasrc.dodragdrop();

讀取:char* pszbuffer = (char*)globallock(hglobal);

char* sep = ",";

char* token;

tintarray arrselindex;

token = strtok(pszbuffer, sep);       

int nindex = -1;

while (null != token)

catch (...)

token = strtok(null, sep);

}

STL 執行緒安全性

stl 執行緒安全性 摘錄 在所有的主流stl實現方案中,幾乎所有的容器都是執行緒安全的 1 乙個執行緒讀寫乙個例項時,另乙個執行緒可以讀寫另乙個例項。2 多個執行緒可以在同時讀同乙個container。3 多個執行緒讀寫同乙個container時,你應該負責安排互斥性操作。乙個特例是std str...

STL容器的執行緒安全?

執行緒安全的情況 執行緒不安全的情況 看到風險了吧?在工程中多執行緒操作stl的場景應該還是比較常見的,乙個典型的例子就是用其來做生產者 消費者模型的佇列或者其他共享佇列,這樣為了應對執行緒安全問題我們必須自己對容器操作進行封裝。這是我自己實現的的封裝類threadsafe container.h,...

STL的多執行緒安全問題

1 stl的執行緒安全.說一些關於stl容器的執行緒安全相關的話題。一般說來,stl對於多執行緒的支援僅限於下列兩點 貌似effective stl中有描述 1.多個讀取者是安全的。即多個執行緒可以同時讀取乙個容器中的內容。即此時多個執行緒呼叫 容器的不涉及到寫的介面都可以 eg find,begi...