2010-11-26 7 views
0

Interlocked winapi関数を使用する利点と欠点は、Win32プラットフォームでアトミックな操作を提供するライブラリではなく、何ですか?Interlocked ops vs XXX :: Win32 on atomic

移植性は問題ではありません。

答えて

3

移植性が問題でない場合、基本的には、この権利を得るために信頼する人を決定することになります。ライブラリは一般的に移植性を提供するように設計されています。それ以外の場合は、15年以上にわたり戦闘強化されているOS提供の実装と競合する厳しい時間があります。

this threadをチェックすると、明白な実装が実際には最良ではない例が表示されます。

+0

例えば、インテルのTBB :: atomic があります。 MicrosoftはOSを提供していますが、Intelはプロセッサを製造しています。あなたはもっと誰を信頼しますか? –

+1

Hehe、あなたはAMDのプロセッサでうまく動作するようにIntelのコードを信じますか? –

+0

私の場合、コードは常にIntelプロセッサ上で実行されているとします。 –

1

インターロックされたwinapi関数は、ロックされた操作のCPUサポートがない場合でも、古いプロセッサで機能します。 386、おそらく486、まだあなたがまだWin9xと古いNTをサポートしていない限り、実際には問題にはなりません。

+0

しかし、それらのCPUでは*別々に動作します。 (それらは他のインターロックされた操作に関して原子的なものにすぎません) – jalf

0

おそらく、問題の特定の原子ライブラリに依存している可能性があります。

特定のバックエンドを持つ良いライブラリは、x86 ロック命令を発行し、その作業を行うための2つのASM命令の同じ実装で終わる可能性があります。また、ライブラリ自体が移植可能であると仮定すると、コードをポータブルにすることができます。

素朴な原子の実装かもしれない通常の変数を保護するためにミューテックスを使用するような何か重いことをします。私はそれが何かを知らない - 議論のポイントを作るだけ。

このように、あなたの記載されている非移植性の要件を考慮して、Win32関数を使用するのは問題ありません。あるいは、Atomicバージョンを試してみてください。実際の実装を見てみてください。

関連する問題