在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
条件变量模式(The Condition variable Pattern) 指的是一个任务在等待一个变量的状态.(例如一个线程当变量为true的时候执行,否则就一直在休眠状态)
以下代码演示了Thread1 一直在等待m_condition的状态 Thread1在等待状态改变的过程中,间歇性的暂时释放锁的控制权 这样Thread2就有机会获得到锁,改变m_condition的状态,并且执行Pulse(All)方法, 该方法将在执行Mointor.Exit(m_lock)的时候唤醒所有等待者,此时等待者发现状态已经改变,那么就开始执行相应的业务逻辑
代码
这个模式的好处就是不像自旋锁(Spin Lock)一样在等待的过程中浪费cpu 自旋锁通常用于非常短时间的锁定, 如果长时间锁定将大量浪费cpu 所以稍微长的时间锁定可以采用条件变量模式
PS1:如果....如果没人吧条件置为许可的状态...那么这线程就永远等下去了..直到进程被终止的那一天 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论