Linux系統程式設計—程序間同步
阿新 • • 發佈:2020-09-22
我們知道,執行緒間同步有多種方式,比如:訊號量、互斥量、讀寫鎖,等等。那程序間如何實現同步呢?本文介紹兩種方式:互斥量和檔案鎖。
##**互斥量mutex**
我們已經知道了互斥量可以用於線上程間同步,但實際上,互斥量也可以用於程序間的同步。為了達到這一目的,可以在pthread_mutex_init初始化之前,修改其屬性為程序間共享。mutex的屬性修改函式主要有以下幾個:
主要應用函式:
pthread_mutexattr_t mattr 型別: 用於定義互斥量的屬性
pthread_mutexattr_init函式:初始化一個mutex屬性物件
pthread_mutexattr_destroy函式:銷燬mutex屬性物件 (而非銷燬鎖)
pthread_mutexattr_setpshared函式:修改mutex屬性。
**int pthread_mutexattr_setpshared(pthread_mutexattr_t \*attr, int pshared);**
我們重點看第二個引數:pshared,它有以下兩個取值:
**執行緒鎖:**PTHREAD_PROCESS_PRIVATE (mutex的預設屬性即為執行緒鎖,程序間私有)
**程序鎖:**PTHREAD_PROCESS_SHARED
要想實現程序間同步,需要將mutex的屬性改為**PTHREAD_PROCESS_SHARED**。
```
#