10

Java では、mutex されたステートメントを説明するために「同期」という言葉を使用することを選択するのは単に間違いだと聞いたことがあります (編集:「間違い」はここでの言葉の選択が不適切でした。編集を参照してください)。実際に選択の背後にある理由。

[編集]

Safyan のコメントに促されて、同期はスレッド間のタイミング関係を確立するための一般的な用語であることを付け加えたいと思います。これには、相互排除やレート制御などを含めることができます (たとえば、2 つのスレッドが同じレートで何かを実行するなど)。「mutexed」のようなより具体的なキーワードの代わりに、相互排除を意味する「synchronized」を使用することは、不必要にあいまいに見えます。

4

3 に答える 3

7

間違いではありません。それはそれが言うことを意味します。相互排除を提供するために、コードは他のスレッドと同期する必要があります。実際、同期という用語は、「ミューテックス」よりも意味があるかもしれません。「ミューテックス」は非常に特殊なタイプの同期プリミティブを意味し、同期キーワードは、任意の数のスレッド同期プリミティブを使用して実装できるためです (test&set with active polling,セマフォなど)。

于 2010-04-27T04:02:03.173 に答える
0

実際、mutex の代わりに synchronized キーワードを使用することは、この用語を表現する良い方法です。ミューテックスについてはあまり明確ではありませんが、synchronized キーワード自体がそれ自体を物語っています。Synchronized は、すべてがそのコードにアクセスしたいスレッド間で実際に同期する必要があるコードに配置されます。そのため、同期と呼ばれます。

于 2010-04-27T05:44:52.847 に答える
0

同期キーワードは、モニターのロックを取得および解放するために使用されます。ミューテックスと同様に、モニターは同時実行制御に使用されますが、同じではありません。

synchronized を使用すること自体は間違いではありませんが、マルチスレッドで使用するための低レベルの構造である可能性があり、不適切に使用するとすぐにマルチスレッド エラーが発生する可能性があります。

于 2010-04-27T04:04:35.317 に答える