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需要设置在需要保护的共享内存区当中。
原文:https://www.cnblogs.com/wangkaia/p/13657975.html