社区
C语言
帖子详情
用信号量编程,遇到个死锁问题,麻烦了
vincent_1011
2009-05-21 01:57:13
以下是案例:
我将一个DLL注入到10个进程中去。但是我只需要2个同时工作。就这样的轮流下去。
我已经用信号量实现了,问题是有可能一个拥有信号量的进程突然死掉,这时候它没释放信号量。
这种情况怎么解决??如果有查看哪个进程线程拥有信号量的API就好了
...全文
363
11
打赏
收藏
用信号量编程,遇到个死锁问题,麻烦了
以下是案例: 我将一个DLL注入到10个进程中去。但是我只需要2个同时工作。就这样的轮流下去。 我已经用信号量实现了,问题是有可能一个拥有信号量的进程突然死掉,这时候它没释放信号量。 这种情况怎么解决??如果有查看哪个进程线程拥有信号量的API就好了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Wolf0403
2009-05-21
打赏
举报
回复
如果是被 Kill -9 或者 Terminate,at_exit 是不会被调用的。
猜想 3楼的方法是可以的。
linren
2009-05-21
打赏
举报
回复
方法一:
可以屏蔽可能导致进程结束的信号
方法二:
进程正常结束用on_exit函数来做收尾的处理
进程异常结束就使用异常处理的方法来处理
arthur
2009-05-21
打赏
举报
回复
Windows下,通告使用命名信号量和 OpenSemaphore 就可以吧。
猫已经找不回了
2009-05-21
打赏
举报
回复
[Quote=引用楼主 vincent_1011 的帖子:]
以下是案例:
我将一个DLL注入到10个进程中去。但是我只需要2个同时工作。就这样的轮流下去。
我已经用信号量实现了,问题是有可能一个拥有信号量的进程突然死掉,这时候它没释放信号量。
这种情况怎么解决??如果有查看哪个进程线程拥有信号量的API就好了
[/Quote]
给每个进程开守护进程,挂掉就恢复之
liliangbao
2009-05-21
打赏
举报
回复
帮顶!!!
vincent_1011
2009-05-21
打赏
举报
回复
基本想到怎么做的。
waitfor成功之后使用一个全局标记性变量,设置为true标记已经获取了信号量,
release后就标记为false。
在程序crash的时候,在全局SetUnhandleExceptionFilter设置的SEH就能捕获到。这时就判断下那个全局懂变量
若为true则release.
不过我觉得这里有个很特殊的问题,关于原子性。如果waitfor成功后还没设置标记量,或者
release 后还没设置标记量,程序就挂了的话,就傻了
当然这是相当极端的吧。希望不要发生,哈,
<顺便问题下有没办法能保证一个进程的一段代码原子性执行!这样上面问题就不会出现了。
vincent_1011
2009-05-21
打赏
举报
回复
要搞清楚。那个是内核对象的。并且并不是它创建的,他只是open 来使用而已
rwjlqn
2009-05-21
打赏
举报
回复
用用shell搞搞它试试呗~~
hjjdebug
2009-05-21
打赏
举报
回复
帮顶,关注! 进程死掉后的资源回收。
vincent_1011
2009-05-21
打赏
举报
回复
啥意思?
就算回复了,信号量也没得到release啊。
而且进程挂掉是内存不能read之类的错误死的,昨晚睡觉想了下
不知道用SEH能搞不。。
chenzhp
2009-05-21
打赏
举报
回复
进程被挂掉,应该有一个消息通知吧
JVM性能调优面试必问OOM和CPU100%和
死锁
排查实战原理分析
本节课通过两个方面系统性的给大家分享JVM的生产
问题
排查实战。 第一章节,介绍OOM异常的原因,分析方法论,实战OOM讲解,工具分析dump文件,确定
问题
点,解决
问题
等分析OOM
问题
排查实战。 第二章节,介绍CPU100%...
你会如何查找并定位
死锁
?这里教你几招!
最近,在IDEA上进行多线程
编程
中老是在给线程加锁的时候,总是会
遇到
死锁
问题
,而当程序出现
死锁
问题
时,编译器不能精确的显示错误的精确位置。当项目代码很多的时候, 往往会给自己添加不必要的
麻烦
,今天,我就...
使用
信号量
实现生产者消费者|C语言
使用的现场同步方法为
信号量
本文侧重于理解条件变量的使用 为保证代码简洁,本文代码没有对函数的返回值进行检查,聪明的你一定一定知道如何检查这个小细节(•̀ᴗ•́)و ̑̑ 关于互斥锁+条件变量的多生产者多...
操作系统原理与实践7-
信号量
的实现和应用
掌握
信号量
的使用,并应用它解决生产者——消费者
问题
; .掌握
信号量
的实现原理。 实验内容 本次实验的基本内容是: 1.在Ubuntu下编写程序,用
信号量
解决生产者——消费者
问题
;2.在0.11中实现
信号量
,用...
操作系统【二】
死锁
问题
以及处理方法
死锁
:在并发环境下,个进程因为竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。 区别: 饥饿:由于长期得不到想要的资源进程无法向前推进的现象。 死循环:程序运行无法...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章