OpenMP 執行緒互斥鎖

2021-09-06 14:03:24 字數 838 閱讀 6268

openmp是跨平台的多核多執行緒程式設計的一套指導性的編譯處理方案(compiler directive),指導編譯器將**編譯為多執行緒程式。

多執行緒程式設計中肯定會涉及到執行緒之間的資源共享問題,就可以使用互斥鎖,就是只有獲得互斥鎖的執行緒可以執行,其他執行緒阻塞。

1.openmp中的互斥鎖函式

void omp_init_lock(omp_lock *)              初始化互斥器

void omp_destroy_lock(omp_lock *)       銷毀互斥器

void omp_set_lock(omp_lock *)              獲得互斥器

void omp_unset_lock(omp_lock *)          釋放互斥器

bool omp_test_lock(omp_lock *)             試圖獲得互斥器,如果獲得成功返回true,否則返回false

2.**例項

1 #include 2 #include 3

4static omp_lock_t lock;5

void putmes(inti)6

1516

intmain()

1724 omp_destroy_lock(&lock); //

銷毀互斥器

25return0;

26 }

編譯執行(可以看到bb1,bb2總是順序一起輸出的):

OpenMP 執行緒互斥鎖

openmp是跨平台的多核多執行緒程式設計的一套指導性的編譯處理方案 compiler directive 指導編譯器將 編譯為多執行緒程式。多執行緒程式設計中肯定會涉及到執行緒之間的資源共享問題,就可以使用互斥鎖,就是只有獲得互斥鎖的執行緒可以執行,其他執行緒阻塞。1.openmp中的互斥鎖函式 ...

openmp之互斥鎖

openmp中有一些同步機制可以避免執行緒競爭問題的發生。可以使用同步機制,使得執行緒只有執行到某個語句,才能繼續執行後面的程式。在程式需要訪問可能產生競爭的記憶體資料的時候,都需要插入相應的臨界區 乙個例子是定積分確定求圓周率pi的值 函式介面只需要確定區間0 1之間的分段數,段數越多,pi的值自...

執行緒 互斥鎖

include include include include include 1.靜態初始化,當動態初始化時,遮蔽靜態初始化 pthread mutex t mutex pthread mutex initializer 2.動態初始化 pthread mutex t mutex int lock...