gpt4 book ai didi

c++ - 使用 atomic bool 保护进程

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:18 24 4
gpt4 key购买 nike

请假设这段代码是一个多线程函数:

if( !executing_singular_process ){
executing_singular_process = true;
singular_process();
}
executing_singular_process = false;

哪里executing_singular_processstd::atomic<bool> .

是否存在一个线程将执行的可能性 if( !executing_singular_process )在另一个线程中的精确时刻 if( !executing_singular_process )executing_singular_process = true;

如果是这样,如何使用 atomic bool 来确保一个进程永远只由一个线程执行?

最佳答案

是的,两个线程可能会同时执行函数 singular_process()。您可以使用 compare_exchange 避免此问题:

bool expected = false;
if (executing_singular_process.compare_exchange_strong(expected, true)) {
singular_process();
executing_singular_process = false;
}

关于c++ - 使用 atomic bool 保护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619563/

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