荒屋敷智也のブログ

【C++備忘録】Visual Studio2022 マルチスレッド

当ブログではアフィリエイト広告を利用しています

参照リンク

qiita.com

サンプルコード

複数処理の平行処理と排他制御の動きを確認

#include <cstdint>
#include <iostream>
#include <mutex>
#include <thread>

std::mutex mtx_; // 排他制御用ミューテックス
uint32_t count_;

void add_count()
{
    // count_を加算する前にミューテックスを取得する
    std::lock_guard<std::mutex> lock(mtx_);
    ++count_;
}

void ThreadA()
{
    for (int i = 0; i < 100000; ++i) {
        add_count();
    }
}

void ThreadB()
{
    for (int i = 0; i < 100000; ++i) {
        add_count();
    }
}

int main()
{
    count_ = 0;

    std::thread th_a(ThreadA);
    std::thread th_b(ThreadB);

    th_a.join();
    th_b.join();

    std::cout << "count_ : " << count_ << std::endl;

    return 0;
}