タグ

CASに関するrti7743のブックマーク (2)

  • 楓 software: マルチスレッドとアトミック/インターロック

    « クラスメンバ渡しと引数渡し | メイン | SQLite の VFS » 2008年01月14日 思う事/思い付いた事:: マルチスレッドとアトミック/インターロック Tweet    @jin1016をフォロー ムービーでは、特に気にせずクリティカルセクションでロックをかけて処理しているが、Windows のクリティカルセクションはかなり遅いらしい。 これはいくつかの文書で見かける。 そして、クリティカルセクションではなく、可能ならインターロック系のメソッドを使うとかなり改善するとも。 インターロック系のメソッドは、InterlockedIncrement や InterlockedDecrement、InterlockedCompareExchange など。 Linux なら、atomic.h の atomic_inc や atomic_dec、atomic_compare_an

  • Windows Interlocked API | ホイール欲しい ハンドル欲しい

    Windows の Interlocked 系 API は atomic な操作に使われます。 例えば InterlockedIncrement() は load と store を含みますが、その間に他の スレッドが同じメモリを書き換えることなく処理が完了するよう調整されます。 x64 でコンパイルするとこれらの Interlocked API はインライン展開されるようです。 下記のように同機能の intrinsic 命令が用意されおり、x64 では単なる別名として 定義されていました。 ・InterlockedCompareExchange Function ・_InterlockedCompareExchange Intrinsic Functions x86 でも直接 _InterlockedCompareExchange() を使えば組み込み命令として機能します。 実際のコード

  • 1