この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#でのマルチスレッド関連操作 lock (statement) volatile (keyword) Volatile (class) Interlocked (class) Common Language Infrastructure (CLI)における volatile read/write の仕様 まとめ References この記事のお話の流れは、①マルチスレッドプログラミングで発生する問題、②それらの問題に対処するためのメモリバイアについて、③それ