2009-08-21 4 views

答えて

17

Multithreading複数のスレッドが単一プロセスのコンテキスト内に存在することを可能にします。これらのスレッドはプロセスのリソースを共有しますが、独立して実行できます。スレッド型プログラミングモデルは、開発者に並列実行の有用な抽象化を提供します。しかし、この技術の最も興味深いアプリケーションは、マルチプロセッサシステムで並列実行を可能にする単一のプロセスに適用される場合です。単一processアプリケーションがより良い利用可能なハードウェア(複数のコア/プロセッサ)を使用することができ、多くの異なる「機能」executingconcurrentlyを有することができることを意味

。スレッドは、(彼らはshared memoryを持っている)それらの間で通信を行うことができますが、共有オブジェクト/メモリをaccesingときにそのhard problemothersとすべてのスレッドbehave wellを持っています。長い操作を行うとき

スレッディングは、キャッチすべてのアプリケーションループを使用せずに、アプリケーションが応答を維持することができます。

例えば、スレッドなしのcopyプログラムでは、コピーが完了するまで何もすることができません。

スレッド化は複雑で、長時間の独立した問題に役立ちますが、a lot more complexityになると、熟練した開発者でも難しくなります。彼は

スレッドとプロセスの実装では、別のオペレーティングシステムとは異なり、ほとんどの場合、スレッドは、プロセス内に含まれる言っ

1

threadを複数使用してその目的を達成するアプリケーションです。

ユーザと対話する必要があり、ほとんどのアプリケーションは、UIスレッドと作業スレッドのセットを持っているとして、多くの例があります。これは、アプリケーションが何らかのタスクを実行している間にUIを応答可能なままにするために行われます。

+4

プロセス!=スレッド – ripper234

1

マルチスレッドアプリケーションは、物事をスピードアップするために、同時に複数のタスクを実行している利用しています。マルチスレッドでは、複数のCPUマシンを利用することもできます。

2

これは、複数のことを同時に行うことができるアプリケーションです。たとえば、Wordで文書を結んでいる場合は、キーボードに応答するスレッドがあります。スペルをチェックしているスレッドがあります。文法をチェックしているスレッドがあります。プログラムがクラッシュします。

0

それは、複数のthreadを使用するプログラムです。異なるスレッドは、共有メモリ構造にアクセスすることができる(通常、適切なsynchronization mechanisms、例えばlocksを使用することによって)。一例は、いくつかのファイルを同時にダウンロードするプログラムで、ダウンロードプロセスを高速化するために別のスレッドを使用してダウンロードします(それを実現するための高度な方法がありますが、これは単なる例です)。

マルチスレッドは、最近のコンピュータですべてのコアを使用する(複数のプロセッサを使用してサイファーを破るなどの)利点があるCPUバインドタスクでよく使用されます。

スレッドとプロセスの違いは、プロセス間で情報を共有するさまざまなメカニズムが存在するにもかかわらず(通常はスレッド間で情報を共有するよりもコストがかかります)、異なるプロセスが通常メモリとデータ構造を直接共有できないことです。広範なプログラミングおよび実行モデルとして

0

。複数のスレッドは同じプロセス内に存在し、メモリなどのリソースを共有できますが、異なるプロセスはこれらのリソースを共有しません。

-1

スレッドのためには、プログラムのインスタンスが何であるかを知っておく必要があります。Windowsのペイントの例を取っ​​て実行します。それは、1つのインスタンスまたはペイントプログラムのプロセスです。 異なるウィンドウで複数の画像を開き、そのプログラムの複数のプロセスを作成するとき。 同様に、スレッドはプロセスの単位です。つまり、ペイントウィンドウが表示されますが、バックグラウンドには複数のスレッド(例:カラー、ブラシ、鉛筆など)があります。スレッドはプロセッサの負荷を軽減するためにあります

関連する問題