Linux執行緒同步有哪些方法,linux的執行緒同步方式有哪些

2022-03-14 08:25:09 字數 2073 閱讀 3436

1樓:南葛小子

一、互斥鎖(mutex)

初始化鎖。在linux下,執行緒的互斥量資料型別是pthread_mutex_t。在使用前,要對它進行初始化。

靜態分配:pthread_mutex_t mutex = pthread_mutex_initializer;

動態分配:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *mutexattr);

加鎖。對共享資源的訪問,要對互斥量進行加鎖,如果互斥量已經上了鎖,呼叫執行緒會阻塞,直到互斥量被解鎖。

int pthread_mutex_lock(pthread_mutex *mutex);

int pthread_mutex_trylock(pthread_mutex_t *mutex);

解鎖。在完成了對共享資源的訪問後,要對互斥量進行解鎖。

int pthread_mutex_unlock(pthread_mutex_t *mutex);

銷燬鎖。鎖在是使用完成後,需要進行銷燬以釋放資源。

int pthread_mutex_destroy(pthread_mutex *mutex);

二、條件變數(cond)

初始化條件變數。

靜態態初始化,pthread_cond_t cond = pthread_cond_initialier;

動態初始化,int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);

等待條件成立。釋放鎖,同時阻塞等待條件變數為真才行。timewait()設定等待時間,仍未signal,返回etimeout(加鎖保證只有一個執行緒wait)

int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);

int pthread_cond_timewait(pthread_cond_t *cond,pthread_mutex *mutex,const timespec *abstime);

啟用條件變數。pthread_cond_signal,pthread_cond_broadcast(啟用所有等待執行緒)

int pthread_cond_signal(pthread_cond_t *cond);

int pthread_cond_broadcast(pthread_cond_t *cond); //解除所有執行緒的阻塞

清除條件變數。無執行緒等待,否則返回ebusy

int pthread_cond_destroy(pthread_cond_t *cond);

三、訊號量(sem)

訊號量初始化。

int sem_init (sem_t *sem , int pshared, unsigned int value);

這是對由sem指定的訊號量進行初始化,設定好它的共享選項(linux 只支援為0,即表示它是當前程序的區域性訊號量),然後給它一個初始值value。

等待訊號量。給訊號量減1,然後等待直到訊號量的值大於0。

int sem_wait(sem_t *sem);

釋放訊號量。訊號量值加1。並通知其他等待執行緒。

int sem_post(sem_t *sem);

銷燬訊號量。我們用完訊號量後都它進行清理。歸還佔有的一切資源。

int sem_destroy(sem_t *sem);

2樓:匿名使用者

互斥鎖、條件變數、訊號量

linux的執行緒同步方式有哪些

3樓:匿名使用者

三種同步方式:1、互斥鎖(mutex)、2、條件同步(cond)、3、訊號量(semphore).

如果還想深入:可以參考

linux系統中執行緒同步實現機制有哪些

如何實現linux下多執行緒之間的互斥與同步

同步發電機與電網並列的方法有哪些

同步發電機與電網並列的方法有自同期法和準同步法。通常為了在並列時減小衝擊電流一般都使用準同步法,並列時調整發電機的勵磁電流和轉速,在發電機與電網相序相同.頻率相等.電壓大小相等及相位相同時並列。同步發電機與電網並列的方法有哪些 同步發電機與電網並列的方法有自同期法和準同步法。通常為了在並列時減小衝擊...

用於執行緒處理的類有哪些

執行緒就是 繼承thread類 或實現runnable結果。在run方法裡面寫上你要做的事就是了。j a中什麼叫做執行緒?什麼叫多執行緒?多執行緒的特點是什麼?先理解這幾概念 a1.程式 指令和資料的byte序列,a2.程序 正在執行的程式 如qq a3.一個程序中可能有一到多個執行緒。執行緒的概念...

linux系統的手機有哪些,linux系統有哪些

linux 是核心,沒有要看他行事的意義。尤其是手機這種特殊裝置。android 就是 linux 為基礎的,但實際使用者用起來和 linux 基本無關,除非你破解手機才會接觸到 linux。同樣 moto 的手機也是這樣。另外,三星很久以前有一款 linux 手機。國內還有幾個廠家用了 linux...