小编Kir*_*ryl的帖子

为什么memory_order_relaxed的性能与memory_order_seq_cst相同

我创建了一个简单的测试来检查怎么std::memory_order_relaxed快于std::memory_order_seq_cst对价值atomic<int>增量.然而,两种情况的表现都相同.
我的编译器:gcc版本7.3.0(Ubuntu 7.3.0-27ubuntu1~18.04)
构建参数:g ++ -m64 -O3 main.cpp -std = c ++ 17 -lpthread
CPU:Intel(R)Core(TM)i7- 2670QM CPU @ 2.20GHz,4核,每核2线程
测试代码:

#include <vector>
#include <iostream>
#include <thread>
#include <atomic>
#include <chrono>
#include <functional>

std::atomic<int> cnt = {0};

void run_test_order_relaxed()
{
    std::vector<std::thread> v;
    for (int n = 0; n < 4; ++n) {
        v.emplace_back([]() {
            for (int n = 0; n < 30000000; ++n) {
                cnt.fetch_add(1, std::memory_order_relaxed);
            }
        });
    }
    std::cout << "rel: " << cnt.load(std::memory_order_relaxed); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

7
推荐指数
1
解决办法
309
查看次数

标签 统计

c++ ×1

c++11 ×1