1
iOSデバイスのARMプロセッサは、メモリ書き込みの順序付けを強制しないと報告されています。つまり、あるプロセッサがデータ構造体または配列を書き込み、その後有効なフラグを更新すると、別のプロセッサは、データがメモリに到達する前に更新された有効フラグを見て、ゴミを読み込む可能性があります。これは、フラグ変数が小さく(原子サイズ)、volatile宣言されていても当てはまります。メモリ障壁は、IOS ARMの弱いメモリ書き込み順序を解決するには?
いくつかのARMメモリバリア命令、組み込み関数、同等の呼び出しでコンパイルするようにXcodeに指示する方法はありますか(データが同じメモリ上の他のプロセッサから見えるように)チップ)の有効なフラグの更新が発行される前に?
これは、リアルタイムコールバックのロックを取ることが許可されていないリアルタイムコード用です。
ありがとうございました。これは、1つのコールコールOSMemoryBarrier()のように見えます。スウィフトコードから直接。 – hotpaw2
しかし、現在の2.x SwiftコンパイラがOSAtomicメモリバリアを並べ替えることが保証されないため、信頼性が低くなります。したがって、現在の解決策は、コードブロック内にいくつかの連続した保証が必要なコードブロック全体を含むCまたはObjective Cコードを呼び出し、そこで必要なメモリバリアを挿入することです。 – hotpaw2