在C11中,cnd_timedwait函数的定义如下:



当发生虚假唤醒时,函数将返回thrd_success还是thrd_error

尽管据我所知,从技术上讲,虚假唤醒并不是错误。

最佳答案

如果cnd_timedwait可以告知唤醒是虚假的,则不会这样做。它不会只是为了欺骗您而进行虚假的唤醒。之所以会发生这种情况,是因为在计划了唤醒之后但在唤醒线程无法执行任何操作之前,条件的值可以更改。

由于cnd_timedwait无法判断返回是否是虚假的,因此它的返回值不能反射(reflect)该事实。这是正常的成功返回。您的首要任务是验证条件。

关于c - 虚假唤醒的返回值是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59564596/

10-12 15:02