进程共享内存时的同步问题

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需要设置在需要保护的共享内存区当中。

进程共享内存时的同步问题

上一篇:Nginx(二): worker 进程处理逻辑-流程框架


下一篇:linux为网卡设置别名