下面是一个简单的示例代码,用于比较std::atomic_load和std::atomic_store与std::lock_guardstd::mutex之间的性能开销:
”`cpp
#include
std::atomic
// 使用 std::atomic_load 和 std::atomic_store 进行并发访问 void atomicAccess() {
for (int i = 0; i < 100000; ++i)
{
int value = std::atomic_load(&sharedData, std::memory_order_relaxed);
std::this_thread::yield(); // 模拟其他线程操作
value += 1;
std::atomic_store(&sharedData, value, std::memory_order_relaxed);
}
}
// 使用 std::lock_guardstd::mutex 进行并发访问 void mutexAccess() {
for (int i = 0; i < 100000; ++i)
{
std::lock_guard<std::mutex> lock(mutex);
int value = sharedData;
std::this_thread::yield(); // 模拟其他线程操作
value += 1;
sharedData = value;
}
}
int main() {
auto startAtomic = std::chrono::high_resolution_clock().now();
atomicAccess();
auto endAtomic = std::chrono::high_resolution_clock().now();
auto startMutex = std::chrono:<br/><br/><br/><font size=1 color=#CCCCCC>内容由零声教学AI助手提供,问题来源于学员提问</font>




