glibc / NPTL / Linux强大的互斥体中的竞态条件是怎样的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (57)

我找不到任何引用来查找这样的bug /问题。索赔是否仅仅是错误的?

我所要求的以及我感兴趣的原因是,这与基于相同的Linux健壮互斥体原语构建的自己的实现的正确性有关。

提问于
用户回答回答于

FreeBSD pthread开发者David Xu对比赛的描述:http : //lists.freebsd.org/pipermail/svn-src-user/2010-November/003668.html

我不认为munmap / mmap周期是比赛严格要求的。这段共享内存也可能被用于不同的用途。这是不常见的但是有效的。

用户回答回答于

线程A持有强大的互斥锁并解锁它。基本程序是:

  1. 把它放在线程健壮列表头的“挂起”槽中。
  2. 将其从当前线程保持的健壮互斥锁的链接列表中移除。
  3. 解锁互斥锁。
  4. 清除线程健壮列表标题的“挂起”插槽。

解决方案是在上面的步骤2和步骤4之间对mmap / munmap进行全局锁定。

扫码关注云+社区

领取腾讯云代金券