pthread mutex lock使用例項

2021-10-19 18:11:23 字數 1165 閱讀 2770

相關的操作函式:

int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr) —動態建立條件變數

pthread_mutex_lock —互斥鎖上鎖

pthread_mutex_unlock ----互斥鎖解鎖

pthread_cond_wait() / pthread_cond_timedwait -----等待條件變數,掛起執行緒,區別是後者,會有timeout時間,如 果到了timeout,執行緒自動解除阻塞,這個時間和 time()系統呼叫相同意義的。以2023年時間算起。

pthread_cond_signal ----啟用等待列表中的執行緒,

pthread_cond_broadcast() -------啟用所有等待執行緒列表中最先入隊的執行緒

注意:1)上面這幾個函式都是原子操作,可以為理解為一條指令,不會被其他程式打斷

2)上面這個幾個函式,必須配合使用。

3)pthread_cond_wait,先會解除當前執行緒的互斥鎖,然後掛線執行緒,等待條件變數滿足條件。一旦條件變 量滿足條件,則會給執行緒上鎖,繼續執行pthread_cond_wait

#include#include#include#includepthread_mutex_t mutex = pthread_mutex_initializer;/*初始化互斥鎖*/

pthread_cond_t cond = pthread_cond_initializer;//init cond

void *thread1(void*);

void *thread2(void*);

int i = 1; //global

int main(void)

void *thread1(void *junk)

else

printf("thread1: %d\n",i);

pthread_mutex_unlock(&mutex);

printf("thread1: sleep i=%d\n", i);

sleep(1);

printf("thread1: sleep i=%d******end\n", i);

}} void *thread2(void*junk)

}

pthread mutex lock互斥鎖的使用

直接上個例子幾簡單哦!現在我姑且認為互斥鎖就是為了保護共享變數 現在看到的這個共享變數就是全域性變數 而設定的,因為還沒學那麼多。互斥鎖的使用 include include cstring include iostream include cstdlib include include inclu...

Response AddHeader使用例項收集

response.addheader refresh 60 url newpath newpage.asp 這等同於客戶機端元素 頁面轉向 response.status 302 object moved response.addheader location newpath newpage.asp...

使用ServletFileUpload實現上傳

1.首先我們應該為上傳的檔案建乙個存放的位置,一般位置分為臨時和真是資料夾,那我們就需要獲取這倆個資料夾的絕對路徑,在servlet中我們可以這樣做 然後建立檔案工廠即倉庫乙個引數表示存放多大後flush,fileitemfactory factory new diskfileitemfactory...