目次 - SDL 3.0 API(機能別) - アトミック操作

アトミック操作

概要

アトミック(不可分)操作.

重要: もしあなたがロックしない並列プログラミングに精通していないのであれば, この分類で使うのはアトミックロックと参照カウントのみにして, それ以外は完全なミューテックスでデータ構造を守るべきだ.

これは本当に危険である!

ロックしないプログラミングとその問題についてはここで取り上げられている: https://learn.microsoft.com/en-us/windows/win32/dxtecharts/lockless-programming

参考になる情報はここにもある:

これらの操作は, プロセッサ固有のアトミック操作を実際に使って実装しているかもしれないし, そうでないかもしれない. もし可能であれば, 本当のプロセッサのアトミック操作で実装されている. 可能でなければ, アトミック操作可能なロックを使って実装されている.

メモリを操作するアトミック操作は全てメモリバリアである.

関数

  1. SDL_AddAtomicInt - アトミック変数に加算する
  2. SDL_AddAtomicU32
  3. SDL_CompareAndSwapAtomicInt - もしアトミック変数が「古い値」ならば「新しい値」にする
  4. SDL_CompareAndSwapAtomicPointer - もしポインタが「古い値」ならば「新しい値」にする
  5. SDL_CompareAndSwapAtomicU32
  6. SDL_GetAtomicInt - アトミック変数の値を得る
  7. SDL_GetAtomicPointer - アトミックにポインタを得る
  8. SDL_GetAtomicU32
  9. SDL_LockSpinlock - 0でない値を設定することでスピンロックする
  10. SDL_MemoryBarrierAcquireFunction
  11. SDL_MemoryBarrierReleaseFunction
  12. SDL_SetAtomicInt - アトミック変数に値を設定する
  13. SDL_SetAtomicPointer - アトミックにポインタを設定する
  14. SDL_SetAtomicU32
  15. SDL_TryLockSpinlock - 0でない値を設定することでスピンロックを試みる
  16. SDL_UnlockSpinlock - 0を設定することでスピンロックを解除する

  1. SDL_SpinLock

構造体

  1. SDL_AtomicInt - アトミック整数値を表す構造体
  2. SDL_AtomicU32 - アトミックな符号付き32ビット整数値を表す構造体

マクロ

  1. SDL_AtomicDecRef
  2. SDL_AtomicIncRef
  3. SDL_CompilerBarrier
  4. SDL_CPUPauseInstruction
  5. SDL_MemoryBarrierAcquire
  6. SDL_MemoryBarrierRelease

SDL Wikiへのリンク

SDL3/CategoryAtomic - SDL Wiki