2011-09-08 6 views
5

システムのほとんどのミューテックスがCAS操作を使用して実装されているため、これらの2つの構成のパフォーマンス比較が不思議でした。try-lock mutexコールとCASコールの比較

mutexがCASを使用して実装されている場合、そのmutexのtry-lock呼び出しはCAS操作と同じ/類似のパフォーマンスになると言えますか?

CASは、システムに非常に依存しています。私は、それがよりよく知られた/標準化された派生物であるmutex try-lockに置き換えられるのではないかと考えていました。

答えて

4

あなたの推論は妥当です。どのような正常な実装でも、 "trylock"操作のコストはCASとほぼ同じになります。しかし、CASは一般にtrylockで置き換えることはできません。 trylockは、任意のデータを操作できない弱いプリミティブです。

2

CASとロックの相対的なパフォーマンスについては何も言いません。異なるOSは非常に異なる方法でロックを実装します。 Win32は遅いカーネルにコンテキストスイッチする必要があり、Linuxにはユーザースペースのmutexがあります。パフォーマンスは、クリティカルセクションがどのように競合しているかによっても大きく異なります。クリティカルセクションで何をやっているのか、整数を増やしているのか、複雑な操作をしているのかを検討する必要があります。したがって、相対的なパフォーマンスに入る多くの変数があり、そのことに関して幅広い声明を出すことはできません。

あなたの言語/プラットフォームを使用して、最も簡単にロック抽象化を使用することをお勧めします。パフォーマンスを測定し、それが受け入れられるかどうかを確認します。

+0

Win32にはユーザースペースのミューテックス( 'CriticalSection's)がありますが、それは単なる用語の問題です。 –