多執行緒互斥讀寫資料的一點改進

2021-06-20 01:44:19 字數 508 閱讀 7038

多執行緒對同一塊資料進行操作我們都知道是要加鎖的,如下**,read執行緒更新g_data資料,write執行緒需要的時候寫入g_data資料。

std::vectorg_data;

std::mutex g_mutex;

void read()

... }}

void write()

... }}

int _tmain(int argc, _tchar* argv)

但是,如果write(g_data)函式花的時間太多了(如寫入磁碟檔案),那麼呼叫read的執行緒就會被阻塞掉。

改進方法是:其實我們只要把g_data複製乙份出來,然後就可以慢慢的對複製出來的資料進行操作了,

顯然在記憶體裡複製乙份資料要比write(g_data)快多了,**如下:

void write()

write(localdata);

...}}

多執行緒的一點想法

一直被多種途徑告之多執行緒是個好東西,很好很好,一定要會。但是它到底是怎樣的?如何去用?卻一直不慎了解。最近通過解決c ui卡死這個問題,對多執行緒有了一點感覺。打個比喻吧。中秋快來了,你提著大包小包去趕車回家,這個時候你感覺負擔很大很累走不動,然後你請了兩個樵夫來幫你提東西,現在你輕鬆了。但是到了...

關於多執行緒的一點總結

昨天又在toplanguage上看到一些關於輕量級執行緒的討論,於是對其中很有用的一段話轉過來 記錄下來以供自己日後慢慢研究。下面是由red.gmail.com發表在toplanguage上的 1.process per connection thread per connection 這在連線數不...

關於多執行緒的一點感想

寫了這麼多年多執行緒程式,多執行緒到底是用來幹嘛的,可能這是個很白痴的問題,就我的親身經歷看開主要是因為一下兩點 1.提公升程式效率 2.使得程式可以非同步執行,乙個執行緒幹這個活,另乙個執行緒幹另乙個活 嚴格來說,感覺這還是為了提公升程式效率,因為cpu本身就是在不同執行緒之間切換的,兩個執行緒能...