【发布时间】:2014-07-14 12:56:09
【问题描述】:
在 pthreads 中,如果条件变量 'cond' 发出信号并且pthread_cond_timedwait() 的超时同时发生怎么办?
pthread 标准是否定义了行为?
条件变量是线程库特有的行为吗?
【问题讨论】:
标签: multithreading thread-safety pthreads race-condition condition-variable
在 pthreads 中,如果条件变量 'cond' 发出信号并且pthread_cond_timedwait() 的超时同时发生怎么办?
pthread 标准是否定义了行为?
条件变量是线程库特有的行为吗?
【问题讨论】:
标签: multithreading thread-safety pthreads race-condition condition-variable
从字面上看,“同时”可能是不可能的,并且将取决于硬件。您是否真的关心实现是否将超时优先于信号,即观察信号然后检查超时是否也发生,然后即使它首先观察到信号也对超时采取行动? (或相反亦然)。当时间很关键并且中断处理的优先级很重要时,实时嵌入式系统中可能会出现问题(诸如用于 PIC 的 CCS 等编译器有指令为此目的操纵 ISR 管理),但在大多数 Unix 的非实时内核中是,这个问题应该是无关紧要的,你要问的是你的应用程序的健壮性。
【讨论】: