首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚假唤醒的返回值是多少?

虚假唤醒的返回值是多少?
EN

Stack Overflow用户
提问于 2020-01-02 13:57:45
回答 1查看 91关注 0票数 3

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

int cnd_timedwait( cnd_t*限制cond,mtx_t*限制互斥,const *限制time_point );

原子地解锁由互斥锁指向的互斥对象和cond指向的条件变量上的块,直到线程由cnd_signalcnd_broadcast发出信号,或者直到到达time_point指向的基于TIME_UTC的时间点为止,或者直到出现虚假的唤醒。在函数返回之前,互斥锁再次被锁定。

返回值

如果成功,则为thrd_success,如果在锁定互斥对象之前已达到超时时间,则为thrd_timedout;如果发生错误,则为thrd_error

当出现虚假的唤醒时,函数会返回thrd_success还是thrd_error

虽然据我所知,虚假的唤醒在技术上并不是一个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 14:07:28

如果cnd_timedwait能看出唤醒是虚假的,它就不会这么做。它不会做虚假的唤醒只是为了让你。之所以会发生这种情况,是因为条件的值在计划唤醒之后,但在唤醒线程设法执行任何操作之前,都可能发生变化。

因为cnd_timedwait不能判断返回是否是假的,所以它的返回值不能反映这一事实。这是正常的成功回报。您的第一项任务是验证条件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59564596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档