pthread_mutex_lock用法
條件變量???
? 條件變量是利用線程間共享的全局變量進行同步的一種機制,主要包括兩個動作:一個線程等待"條件變量的條件成立"而掛起;另一個線程使"條件成立"(給出條件成立信號)。為了防止競爭,條件變量的使用總是和一個互斥鎖結(jié)合在一起。 ?
條件變量是利用線程間共享的全局變量進行同步的一種機制,主要包括兩個動作:
1)一個線程等待"條件變量的條件成立"而掛起;
2)另一個線程使"條件成立"(給出條件成立信號)。
為了防止競爭,條件變量的使用總是和一個互斥鎖結(jié)合在一起。
1.主要涉及到下面的函數(shù):
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr) ---動態(tài)創(chuàng)建條件變量
pthread_mutex_lock ---互斥鎖上鎖
pthread_mutex_unlock ----互斥鎖解鎖
pthread_cond_wait() / pthread_cond_timedwait -----等待條件變量,掛起線程,區(qū)別是后者,會有timeout時間,如 果到了timeout,線程自動解除阻塞,這個時間和 time()系統(tǒng)調(diào)用相同意義的。以1970年時間算起。
pthread_cond_signal ----激活等待列表中的線程,
pthread_cond_broadcast() -------激活所有等待線程列表中最先入隊的線程
注意:1)上面這幾個函數(shù)都是原子操作,可以為理解為一條指令,不會被其他程序打斷
? ? ? ? ? ?2)上面這個幾個函數(shù),必須配合使用。
? ? ? ? ? ?3)pthread_cond_wait,先會解除當前線程的互斥鎖,然后掛線線程,等待條件變量滿足條件。一旦條件變 ? ? ? ? ? ? ? ? ? 量滿足條件,則會給線程上鎖,繼續(xù)執(zhí)行pthread_cond_wait
?
2. 代碼實例
編譯:gcc thread_test.c -o thread_test -lpthread
------必須加上-lpthread,不然會報錯,找不到線程的相關(guān)函數(shù),gcc自身沒有連接線
?
總結(jié)
以上是生活随笔為你收集整理的pthread_mutex_lock用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NURBS曲面结构及生成原理、修改方法
- 下一篇: PCL中PFH、FPFH理论