執行緒 二 執行緒間共享資料 互斥鎖

2021-10-02 15:31:58 字數 1245 閱讀 3241

一: 互斥鎖的應用場景(什麼情況下使用)

二: 互斥鎖的幾種用法:

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

class

test

}void

write()

}private

: list<

int> _list;

mutex _mutex;};

intmain

(int argc,

char

*ar**)

times:

5.00125

list_count:

1515個失敗的檔案記錄到佇列, 花費5s

times:

15.0022

list_count:

1515個失敗的檔案記錄到佇列, 花費15s

_mutex.

lock()

; this_thread::

sleep_for

(chrono::

seconds(1

)); _list.

push_back

(i);

_mutex.

unlock()

; 其實完全沒有必要這樣, 因為共享的只是_list 資料, 把this_thread::

sleep_for

(chrono::

seconds(1

));放入鎖中大大影響了執行效果

切勿將額外不必要的執行**加入鎖中,

互斥鎖的用法:

1: `

這是我們最常用的, 上鎖解鎖.

2:

這個其實是對_mutex 做了封裝, 他的解鎖是在析構函式裡面.所以無需理睬他的解鎖

3:

這個的通常用處是, 在一段**塊中,有好幾塊資料需要加鎖, 那末解決的辦法:

1> 給整個**段枷鎖, 這個效率不高(不採用)

2> 分塊給需要的資料加鎖, 如下

執行緒間互斥鎖

一 兩種使用方式 1.靜態方式 pthread mutex t mtx pthread mutex initializer 2.動態方式 include int pthread mutex init pthread mutex t mutex,const pthread mutexattr t at...

多執行緒程式設計 執行緒間共享資料(臨界區 互斥鎖)

執行緒間共享資料的方法 1 全域性物件 2 堆物件 動態建立的物件 任何時刻只允許乙個執行緒對共享資源進行訪問的方法 1 臨界區 critical section 首選 2 互斥鎖 mutex 臨界區和互斥鎖的區別 mutex critical section 效能和速度 慢 mutex是核心物件,...

java多執行緒 二 執行緒的互斥

多執行緒相對於單執行緒而言,大大的提高了硬體cpu的使用率,提高了處理的速度。任何事物帶來的都是兩面性的,多執行緒為我們帶來效能提高的同時也帶來了許多的安全性問題。說互斥之前,先說一下什麼是互斥,舉個列子,一天去atm機取錢,如果沒有互斥的話,你正取著錢突然有個人衝進來把你的錢搶走了。這時候你想,要...