C++ 条件变量和线程上下文开关

C++ 条件变量和线程上下文开关,c++,multithreading,C++,Multithreading,我们有两条线。螺纹A和螺纹B 如果线程A正在使用一个条件变量等待一个条件,那么线程B应该满足(通知)这个条件变量 我的问题是,当线程A在等待条件变量时,CPU上下文是否会关闭线程A。 在此期间,如果线程B调用条件变量notify,那么当CPU计划下一个线程A时,线程A是否会收到通知,或者通知是否丢失,因为发出通知时线程A没有运行。不要过度思考。阅读条件变量规范。当线程在等待中被阻塞时,后续的通知调用将唤醒它。不,通知不会丢失。否则条件变量将完全无用。谢谢Pete。Sam同意通知不应丢失。但是,它

我们有两条线。螺纹A和螺纹B

如果线程A正在使用一个条件变量等待一个条件,那么线程B应该满足(通知)这个条件变量

我的问题是,当线程A在等待条件变量时,CPU上下文是否会关闭线程A。
在此期间,如果线程B调用条件变量notify,那么当CPU计划下一个线程A时,线程A是否会收到通知,或者通知是否丢失,因为发出通知时线程A没有运行。

不要过度思考。阅读条件变量规范。当线程在等待中被阻塞时,后续的通知调用将唤醒它。不,通知不会丢失。否则条件变量将完全无用。谢谢Pete。Sam同意通知不应丢失。但是,它是否存储在队列中,当线程a再次处于活动状态时,排队通知会传递给它?@4d。编码器a通常会从等待信号移动到等待互斥(你知道,在进入cv等待之前锁定的那个,它启动了整个心理训练?)。然而,底层机制并不像确保实际行为遵守POSIX.1c所描述的标准那样重要,POSIX.1c在这一点上比其他任何东西都值得一读。实际上,提供标准库是为了让您可以愉快地忽略上下文切换的存在。对于CPU或OS如何工作,不需要任何争论,如C++所定义的条件变量将按照它的承诺做:当它被通知时醒来。