gpt4 book ai didi

c++ - 语句 block 的原子执行

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:19 25 4
gpt4 key购买 nike

我有一系列要原子运行的语句。为简单起见,假设它们包含在 block 语句中:

{
// statements...
}

在 C++14 中是否有任何直接方法来做这样的事情?

为了澄清,我希望这个 block 被执行,就好像它只是一个原子操作一样。我没有要用互斥体保护的关键部分。问题是捆绑的操作应该一个接一个地执行,而不需要在序列中的第一个和最后一个语句之间进行多次上下文切换。

最佳答案

取决于您所说的“直截了​​当”是什么意思。我想std::unique_lock使用起来非常简单。

{
std::unique_lock lock(m_mutex);
// sequence of operations

// lock destructor will release mutex
}

唯一的问题是任何操作受互斥量保护的变量的其他地方必须做同样的事情。

编辑

要回答已澄清的问题:

要防止上下文切换,您必须使用适当的实时操作系统 (RTOS) 并使用其功能。如果您在 Linux 或 Windows 等通用操作系统下运行(visual-studio 标签表明后者),您可以进行各种特定于平台的调用,这将降低上下文切换的可能性 - 但您无法阻止它们。

(如果您在内核模式下运行,上下文切换的可能性就会降低,但即使那样也很难阻止中断处理程序和页面错误处理程序介入。)

关于c++ - 语句 block 的原子执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649381/

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