インテル64およびIA-32アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアルによると、LOCKシグナル・プレフィックスは、シグナルがアサートされている間、プロセッサーが共有メモリーを排他的に使用することを保証します。これは、バスまたはキャッシュロックの形で行うことができます。インテル64およびIA-32 |獲得/解放の意味を含むアトミック操作
しかし、これが私がこの質問をしている理由です。この接頭辞がメモリバリアを提供するかどうかは私には分かりません。
私はマルチプロセッサ環境でNASMを開発しており、オプションの取得および/または解放のセマンティクスでアトミック操作を実装する必要があります。
MFENCE、SFENCE、LFENCEの命令を使用する必要がありますか、それとも重複していますか?
はい、わかります。しかし、私は(例えば)インターロックされたインクリメントを使用して、私がリソースを獲得していることを知らせたい。したがって、私はインクフェンスの前に 'lence'を使用する必要があることを意味します。どうして?なぜなら、私がシグナリングする前にすべての以前のロード操作が完了していることを確認する必要があるからです。 – 0xbadf00d
いいえ、それを行う必要はありません、それは原子的に行う必要があります。ロックされたアトミック操作に関する私の編集をチェックしてください。 –
しかし、アトミック操作はprioerとは何も関係なく、メモリの読み書きに従っていますか?このブログをチェック:http://blogs.msdn.com/b/kangsu/archive/2007/07/16/volatile-acquire-release-memory-fences-and-vc2005.aspx – 0xbadf00d