程序之間的共享資源的互斥訪問

2021-10-12 16:27:13 字數 1306 閱讀 8497

一.檔案鎖

//獲取鎖,如果已經被占用立即返回,errno被設定為eagain

inttry_lock_fd

(int fd)

//獲取鎖,如果已經被占用則等待

intlock_fd

(int fd)

//釋放檔案鎖即返回,errno被設定為eagain

intunlock_fd

(int fd)

二.共享記憶體+記憶體訊號量(又稱無名訊號量)

下面是乙個簡單的測試程式:

#include

#include

#include

#include

sem_t* psem =

null

;int

main()

if(-1

==sem_init

(psem,1,

0)) pid =

fork()

;if(pid <0)

if(0== pid)

else

}else}if

(pid >0)

else

}printf

("process exit\n");

return0;

}

三.共享記憶體+鎖

共享記憶體+互斥鎖或者讀寫鎖或者原子鎖,都可以實現程序間互斥

以原子鎖為例;

#include

#include

#include

inline

intatom_cmp_set

(unsigned

long

*mem,

unsigned

long newval,

unsigned

long oldval)

intmain()

*atom_val =0;

if((pid =

fork()

)<0)

ret =

atom_cmp_set

(atom_val,1,

0);if

(1== ret)

else

return0;

}

輸出:

in parent process atom_cmp_set secceed atom_val:1

in child process atom_cmp_set failed atom_val:1

程序間 對共享資源的訪問 互斥 機制

分類 linux程式設計 2010 05 04 19 21 4291人閱讀收藏 舉報linux null測試 把源 執行一遍就知道了 cpp view plain copy include include include include include include pthread mutex t...

Linux下的多程序間共享資源的互斥訪問

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!include include include include include include pthread mutex t g mutex 建立共享的mutex void init mutex void 設定attr的屬性 pthread mu...

執行緒的共享資源和私有資源

執行緒共享的環境包括 程序 段 程序的公有資料 利用這些共享的資料,執行緒很容易的實現相互之間的通訊 程序開啟的檔案描述符 訊號的處理器 程序的當前目錄和程序使用者id與程序組id。程序擁有這許多共性的同時,還擁有自己的個性。有了這些個性,執行緒才能實現併發性。這些個性包括 1.執行緒id 每個執行...