先看一下沒加鎖的**及輸出:
#include
#include
using
namespace std;
int i =0;
// 公共資料
// 執行緒1函式
void
aaa()}
// 執行緒2函式
void
bbb()}
intmain
(int argc,
char
* ar**)
輸出:
沒加鎖的結論:
非常混亂 !
再看一下加了鎖之後的** 及 輸出
#include
#include
#include
using
namespace std;
mutex mutex1;
int i =0;
// 公共資料
// 執行緒1函式
void
aaa(
) mutex1.
unlock()
;}// 執行緒2函式
void
bbb(
) mutex1.
unlock()
;}intmain
(int argc,
char
* ar**)
輸出:
加了鎖的總結:
自己感受一哈~
注意:
結束:
分享也是自己對問題再次加深理解的方式,可能不全面,但絕對有用,後面將不斷完善~
多執行緒之互斥量(mutex) 鎖(lock)
private int counter 1 std condition variable cv1 std condition variable cv2 std mutex g mutex 多執行緒之互斥量 mutex 鎖 lock,unlock,lock guard g mutex.lock g m...
多執行緒之Mutex 互斥量
include include include long g count 0 long g sum 0 static const int g s count 10 critical section g csthreadparamer critical section g csthreadcode h...
多執行緒之互斥鎖
當執行緒之間需要用到共同的變數時,不希望某乙個執行緒使用時,被其它執行緒給呼叫,就需要互斥鎖來保證共享資源該執行緒使用完後,再給其它執行緒使用 典型例子 由於執行緒是獲取到作業系統分配的cpu時間片是才會執行,所以單cpu的情況下,多執行緒同步其實並非同步,當其中乙個執行緒1執行的時候,可能會中途跳...