SMP環境で実行する必要のあるマルチスレッドアプリケーションがあり、複数のスレッドからシングル(またはワード長)バイトのグローバルメモリに書き込み(読み取り-変更-書き込みなし)しています。同期メカニズム(ミューテックス、セマフォ、スピンロック)を使用せずにこれを行うことはできますか?
私の推測では、CPUによるアラインされたメモリへのメモリの読み取り/書き込みはアトミックです。したがって、メモリへのアトミックアクセスのためにロックする必要はありません。
ただし、メモリの順序には問題があります。つまり、CPUに対するメモリの可視性の順序は、メモリへのアクセスと同じではない場合があります。これを解決するには、メモリバリア命令が必要です。ユーザースペースコードでメモリバリア命令を使用できますか?そうでない場合、メモリオーダリングの問題を解決するには、murtexまたはspinlockを使用する必要がありますか?