互斥锁总是被锁死出不来了

cabbage000 2014-09-02 09:48:29
互斥的代码如下:



本来是想通过这个进行互斥的,进程里有若干次的调用访问,偶尔会出现阻塞被锁死的情况,不知道问题到底出在哪里?
求各位大拿指教!!
...全文
264 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2014-12-15
  • 打赏
  • 举报
回复
引用 13 楼 Cabbage_c 的回复:
问题解决了,是因为中断里面调用了信号p操作,当信号被占用的时候,中断里面是p不到信号而阻塞,但是中断里面阻塞占用了cpu时间片,而外部程序不能执行所以没法v操作,所以一直死在了中断时间片里,这样就相当于死循环了。
尽然花了3个多月解决这个问题
cabbage000 2014-12-15
  • 打赏
  • 举报
回复
问题解决了,是因为中断里面调用了信号p操作,当信号被占用的时候,中断里面是p不到信号而阻塞,但是中断里面阻塞占用了cpu时间片,而外部程序不能执行所以没法v操作,所以一直死在了中断时间片里,这样就相当于死循环了。
pengzhixi 2014-09-02
  • 打赏
  • 举报
回复
你 p操作的ret为非0的时候 你还是进行了v操作 你只有p操作成功了后面才可以用v操作
mujiok2003 2014-09-02
  • 打赏
  • 举报
回复
引用 9 楼 Cabbage_c 的回复:
[quote=引用 7 楼 mujiok2003 的回复:] [quote=引用 5 楼 Cabbage_c 的回复:] [quote=引用 4 楼 mujiok2003 的回复:] open error的时候没有解锁。
解锁了呀!!![/quote] 都return -1;了, 哪里解锁。 [/quote] 不是先t_sem_V(),然后再return -1的么? [/quote] OKay, 没有看清楚。
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
引用 7 楼 mujiok2003 的回复:
[quote=引用 5 楼 Cabbage_c 的回复:] [quote=引用 4 楼 mujiok2003 的回复:] open error的时候没有解锁。
解锁了呀!!![/quote] 都return -1;了, 哪里解锁。 [/quote] 不是先t_sem_V(),然后再return -1的么?
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
到P操作阻塞了就说明是上次没有V操作,可是为什么会出现没有V操作呢? 不可能的呀!!
mujiok2003 2014-09-02
  • 打赏
  • 举报
回复
引用 5 楼 Cabbage_c 的回复:
[quote=引用 4 楼 mujiok2003 的回复:] open error的时候没有解锁。
解锁了呀!!![/quote] 都return -1;了, 哪里解锁。
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
这个程序是修改过的 ,本来这个内存拷贝,ioctrl和open都是在锁中间的 原来的流程是: _sem_P(); open() ioctrl(); memcpy(); _sem_V(); 我想先确定一下,在锁中间open,ioctrl,内存拷贝不会出现问题吗? 我担心会不会是内存拷贝引起的错误。
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
引用 4 楼 mujiok2003 的回复:
open error的时候没有解锁。
解锁了呀!!!
mujiok2003 2014-09-02
  • 打赏
  • 举报
回复
open error的时候没有解锁。
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
引用 2 楼 truelance 的回复:
P失败了就不应该往下走
对,P失败就阻塞了,可是现在的情况是永远阻塞,出不来了。为什么会出现这种情况,这里的代码有问题吗? 内存拷贝,打开文件,ioctrl都没有问题吗?
熊熊大叔 2014-09-02
  • 打赏
  • 举报
回复
P失败了就不应该往下走
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
最后面的代码注释完了后会关闭文件流。 close(_dev_fd);
cabbage000 2014-09-02
  • 打赏
  • 举报
回复
引用 11 楼 pengzhixi 的回复:
你 p操作的ret为非0的时候 你还是进行了v操作 你只有p操作成功了后面才可以用v操作
P操作如果失败就阻塞了,应该不会继续走了吧。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧