gpt4 book ai didi

c++ - 条件变量通知后的执行顺序

转载 作者:行者123 更新时间:2023-11-28 05:26:02 50 4
gpt4 key购买 nike

有两个线程(称它们为 T1 和 T2)通过 boost 条件变量和互斥量相互同步,例如:

boost::condition_variable global_cond;
boost::mutex global_mutex;
boost::unique_lock<boost::mutex> lock( global_mutex);

thread1() {
global_cond.notify_one();
code_block_a();
}

tread2() {
global_cond.wait(lock)
code_block_b();
}

假设我可以保证线程 2 先来等待,然后线程 1 将执行通知。

我的问题是,code_block_a() 或 code_block_b() 是否先执行是确定性的?

最佳答案

不保证。系统可能会在 thread1 调用 notify_one() 后立即执行上下文切换,并允许 thread2() 运行。它可能不会。

请注意,您的代码通常存在错误,因为 global_cond.wait(lock) 可能会被虚假唤醒并且 tread2 可以运行 code_block_b() 甚至在 thread1() 运行之前。

关于c++ - 条件变量通知后的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40529721/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com