码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2020-09-17 23:17:43      阅读:39      评论:0      收藏:0      [点我收藏+]

标签:控制   标识   系统调用   lag   同步问题   tps   不同   sem   互斥锁   

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

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

标签:控制   标识   系统调用   lag   同步问题   tps   不同   sem   互斥锁   

原文地址:https://www.cnblogs.com/wangkaia/p/13657975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!