2016-05-28 27 views
1

スレッドはどのように動作を同期させることができますか?同じプロセス内のスレッドはリソースを共有するため、他のスレッドと干渉しないようにスレッドはどのように動作しますか?理解しやすい言語で説明してください。すべての専門家のおかげで!スレッドはどのように動作を同期させることができますか?

+0

このページはあなたを始めます:https://en.wikipedia.org/wiki/Synchronization_%28computer_science%29#Thread_or_process_synchronization – user20160

+0

これは助けになりました!ありがとう:) – Anonymous

答えて

1

人がこのドアを1つずつ通過できる狭いドアを想像してください。あまりにも多くの人がいるときには、キューを形成します。それで、正しくプログラミングされたスレッドを実行してください。占有されているときにドアを通過しようとしないような規則に従います。間違ってプログラムされたスレッドは悪意のある人だけでなく、慣習を無視して障害を起こすことがあります。

マルチスレッドプログラミングの主な抽象化は、リソースであり、最大でスレッドの1つに属することができるメモリ領域です。スレッドはリソースを要求し、それらを待ち、所有しています。その間にそのメモリを読み書きすることができ、解放することができます。

リソースを処理するための多くの同期プリミティブがありますが、最も重要なものはセマフォ、モニター、ブロッキング・キューです。

マルチスレッドプログラムを設計したいプログラマーは、まずどのような種類のリソースが使用され、どのようにスレッドがそれらを交換するのか計画を立てる必要があります。次に、標準的な同期設備を使用するか、新しい施設を設計してそれらをプログラムするかを選択します。特別な設備は通常、モニターで行われます。

マルチスレッドプログラミングの指導は、スレッドインタラクションのためにモニタを使用する方法から始まることがよくあります。これは間違っています。まず、学生は95%のケースで十分な標準的な手段であるセマフォーとブロッキング・キューを使い、モニターを使って特殊な施設を設計する方法を学ぶ必要があります。

関連する問題