linux sem_post会失败?

周靖峰 2014-12-03 09:39:29
小弟最近遇到一个极其诡异的问题,一个线程调用sem_wait,另一个线程调用sem_post却没有把它唤醒,它们操作的都是同一个sem_t指针,我的linux内核版本是2.6.24的,问问在场的大神们有没有遇到过类似的情况?
...全文
729 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxianbin 2014-12-09
  • 打赏
  • 举报
回复
引用 6 楼 zjie_main 的回复:
怎么这么巧 http://bbs.csdn.net/topics/390949596
是你自己用错了,回复没看吗?
zjie_main 2014-12-09
  • 打赏
  • 举报
回复
怎么这么巧 http://bbs.csdn.net/topics/390949596
zhiweiaixiaosang 2014-12-08
  • 打赏
  • 举报
回复
我也遇见该问题,sem_post 返回成功,但是获取到的semvalue 是0,sem_wait 一直阻塞。
zhxianbin 2014-12-03
  • 打赏
  • 举报
回复
还是要仔细检查自己的代码,sem_wait 只调用了一次吗?
zhxianbin 2014-12-03
  • 打赏
  • 举报
回复
首先还是要怀疑自己的代码
周靖峰 2014-12-03
  • 打赏
  • 举报
回复
刚才说错了,是__sem_value为1

(gdb) p __mg_dsk_msg_queue->wait
$1 = {__sem_lock = {__status = 0, __spinlock = 0}, __sem_value = 1, __sem_waiting = 0x0}
周靖峰 2014-12-03
  • 打赏
  • 举报
回复
引用 1 楼 zhxianbin 的回复:
还是要仔细检查自己的代码,sem_wait 只调用了一次吗?
只调用了一次 另外通过gdb发现sem_post也应该是成功的,因为gdb显示的sem_t结构体里面__sem_wait值为1。__sem_wait值为1,sem_wait还卡住,莫非这是系统的bug?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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