gpt4 book ai didi

c++ - `std::mutex` 和 `std::lock` 是否保证处理器间代码中的内存同步?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:14 24 4
gpt4 key购买 nike

我目前正在使用 openMP 编写在多核节点上运行的代码。 openMP 有一个特定的内存模型,保证在获取锁时在不同内核上运行的线程之间内存是同步的。

我考虑使用 C++11 构造(std::thread with std::mutex and std::lock)而不是openMP(因为它们更大的灵 active )并想知道处理器之间的内存同步是否/如何在这里得到保证?如果没有,我该如何执行?

最佳答案

该标准在 §30.4.1.2[thread.mutex.requirements.mutex]/6-25 中对 std::mutex 的同步做出了以下保证

The expression m.lock() shall be well-formed and have the following semantics

Synchronization: Prior unlock() operations on the same object shall synchronize with this operation.

同样,

The expression m.unlock() shall be well-formed and have the following semantics

Synchronization: This operation synchronizes with subsequent lock operations that obtain ownership on the same object.

(“同步于”是 $1.10 中解释的一个特定术语,尽管阅读 C++ 并发实战 更容易理解)

关于c++ - `std::mutex` 和 `std::lock` 是否保证处理器间代码中的内存同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10949863/

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