進程共享內存時的同步問題


1 文件鎖

  文件鎖,也被成為記錄鎖,可以控制不同進程對於同一個文件的同步訪問,linux底下

實現的機制有flock(),該調用是對整個文件進行加鎖。還有lockf以及fcntl,其中lockf是對

fcntl的封裝,可以實現對文件當中的某個部分進行加鎖,flock和lockf都是建議鎖而非強制

鎖,二者的加鎖方式和范圍都有區別。

  需要注意使用文件鎖時可能會出現的鎖失效的情況。

 

2 信號量

  int semget (key_t key, int nsem, int oflag) ,該調用為創建信號量的具體系統調用,

類似於共享內存的調用,在信號量的創建過程當中需要添加參數key來標識創建的信號量,

這樣信號量對其他進程可見,從而實現訪問的同步。

 

3 互斥鎖

  互斥鎖一般用於線程之間同步,如果使用mutex來進行進程之間的同步話,需要使用

pthread_rwlockattr_setpshared linuxAPI設置PTHREAD_PROCESS_SHARED,這樣mutex

是對多個進程可見,mutex需要設置在需要保護的共享內存區當中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM