私は現在、学習体験としての趣味のプロジェクトとして、WindowsC++ライブラリをMacOSに移植しています。Win Interlocked *関数を使用していくつかのコードに出くわしたので、一般的にこのテーマについて調べようとしてきました。
ここSOで関連する質問を読んで、OSに応じてこれらの操作を行うさまざまな方法があることを理解しています。WindowsではInterlocked*、MacOSではOSAtomic *であり、コンパイラにはこのための組み込み(組み込み)操作があることもわかりました。
gccの組み込みのアトミックメモリアクセスを読んだ後、組み込みのものとOSAtomic*またはInterlocked*のものの違いは何ですか?つまり、gccを使用しているときにMacOSを使用している場合、OSAtomic *またはgcc組み込みのどちらかを選択できませんか?gccを使用してWindowsを使用している場合も同じです。
また、Windows Interlocked *には、インラインバージョンと組み込みバージョンの両方が用意されていることも読みました。組み込みまたはインラインのどちらかを選択するときに考慮すべきことは何ですか?
一般的に、OSには何を使用するかという複数のオプションがありますか?それとも、これも「状況次第」ですか?もしそうなら、それは何に依存していますか?
ありがとう!