【发布时间】:2012-05-14 15:06:08
【问题描述】:
在实现中存在可能导致信号丢失的竞争条件。问题是 pthread_cond_wait 函数不是原子的?文件中的注释中讨论了相同的内容 https://github.com/android/platform_bionic/blob/master/libc/bionic/pthread.c
这个操作不应该是原子的吗?
【问题讨论】:
-
您指的是该文件中的哪条评论?我看不出有什么明显的错误……
-
请参阅github.com/android/platform_bionic/blob/master/libc/bionic/… 第 1385 行评论说“/* XXX 技术上 存在可能允许 * XXX 错过信号的竞争条件。如果线程 A 是_wait() * XXX 在解锁互斥锁后等待之前抢占,如果其他 * XXX 线程调用信号或广播 UINT_MAX/2 次(准确), * XXX 之前线程 A 再次调度并调用 futex_wait(), * XXX 则信号会丢失。*/"
-
感谢您的澄清。
标签: android multithreading posix libc bionic