社区
Linux/Unix社区
帖子详情
关于使用信号量的一个进程被kill的问题
zhqyzhqychn
2010-07-26 04:02:20
两个进程使用信号量互斥使用一块内存,一个始终跑着,一个可能有时候需要被kill掉重启,如果被kill掉的时候P操作完了,这样锁就会出现问题了,使用了undo标志,但undo最多可以3万多次,就会溢出,有什么好的解决方法吗
...全文
262
3
打赏
收藏
关于使用信号量的一个进程被kill的问题
两个进程使用信号量互斥使用一块内存,一个始终跑着,一个可能有时候需要被kill掉重启,如果被kill掉的时候P操作完了,这样锁就会出现问题了,使用了undo标志,但undo最多可以3万多次,就会溢出,有什么好的解决方法吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Coder_Granger
2010-07-26
打赏
举报
回复
SEM_UNDO只有p和v操作在同一进程时才能使用,否则容易溢出,
生产消费类型可以用SEM_UNDO,但是不能直接用,你可以用信号量保护一块共享内存,
然后在共享内存中记录生产者产出量,消费者和生产者通过信号量同步去访问共享内存,
这么做,p和v就处于同一进程了.
二值同步还可以用文件锁,性能跟信号量差不多,
免去SEM_UNDO烦恼,因为文件锁会随进程退出自动释放.
mymtom
2010-07-26
打赏
举报
回复
作互斥量(二值信号量时),SEM_UNDO应该没有问题吧!
在同一进程中
P操作时, semadj 会+1.
P操作时, semadj 会-1.
不会溢出啊!
生产者消费者类型的应用中就不能用SEM_UNDO,
快乐田伯光
2010-07-26
打赏
举报
回复
进程退出自动就会释放锁吧
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章