程序同步 互斥量

2021-08-30 06:21:49 字數 1111 閱讀 3643

程序間也可以使用互斥鎖,來達到同步的目的。但應在pthread_mutex_init初始化之前,修改其屬性為程序間共享。mutex的屬性修改函式主要有以下幾個。

pthread_mutexattr_tmattr 型別 //用於定義mutex鎖的【屬性】

int pthread_mutexattr_init(pthread_mutexattr_t*attr); //初始化乙個mutex屬性物件

int pthread_mutexattr_destroy(pthread_mutexattr_t*attr); //銷毀mutex屬性物件 (而非銷毀鎖)

intpthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared); //修改mutex屬性

參2:pshared取值

- 執行緒鎖:pthread_process_private(mutex的預設屬性即為執行緒鎖,程序間私有)

- 程序鎖:pthread_process_shared

父子程序通過mmap產生的記憶體對映去進行通訊

子程序對num一次+1

父程序對num一次+2

父子程序使用mutex進行互斥的訪問mmap中的共享的變數num

#include

#include

#include

#include

struct mt

;int

main

(void)}

else

if(pid >0)

wait

(null);

}pthread_mutexattr_destroy

(&mm->mutexattr)

;//銷毀mutex屬性物件

pthread_mutex_destroy

(&mm->mutex)

;//銷毀mutex

munmap

(mm,

sizeof

(*mm));

//釋放對映區

return0;

}

執行緒 程序同步 互斥量

互斥量 mutex 是一種核心物件,它能夠確保執行緒擁有對單個資源的互斥訪問權。互斥量包含乙個使用數量,乙個執行緒 id 和乙個遞迴計數器。id用於標識系統中的哪個執行緒當前擁有互斥物件,遞迴計數器用於指明該執行緒擁有互斥物件的次數。互斥量的行為特性與臨界段相同,但是互斥量屬於核心物件,而臨界段屬於...

程序同步與互斥

程序同步與互斥 首先,我們看乙個例子 程序p1 p2公用乙個變數count,初始值為0 p1 p2兩個程序的執行順序是隨機的,p1 p2可能順序執行或交錯執行。由圖可見,不同的執行順序,count值會不同,這是不允許的。在多道程式系統中,由於資源共享或程序合作,使程序間形成間接相互制約和直接相互制約...

程序同步與互斥

為什麼要引入程序同步的概念?多道程式環境下的程序併發執行,它們相互之間存在著不同的制約關係,為了理解和協調這種制約的關係,引入了程序同步的概念。臨界資源是一次只能為乙個程序使用的資源。由於臨界資源的特性,就決定了 對它的訪問必須是互斥的。在每個程序中,訪問臨界資源的那段 稱為臨界區。為了保證臨界資源...