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需要設置在需要保護的共享內存區當中。