0

スレッドの概念の初心者です。私はスレッドについてほとんど混乱していません。

通常のメソッド呼び出しと、スレッドを使用したメソッド呼び出しの違いは何ですか。thread.join の用途は何ですか?

例: コード ビハインド ファイル: 通常はメソッドを呼び出す

Getdata();

スレッドを使用して、このメソッドを呼び出しています。

Thread th=new Thread(new ThreadStart(Getdata));

th.Start();

高性能を発揮するのはどれか

4

4 に答える 4

1

スレッド化を使用することで、実行速度の遅いプロセスを残りのコードの「横」で実行させることができます。

Join を使用すると、そのコードが完了するのを待っています。

たとえば、3 つの異なる低速サーバーからネットワーク経由でデータを取得しているとします。次に、ツリー スレッドを起動してこのデータを取得し、計算を行う前に結合することをお勧めします。このようにして、3 つのサーバーすべての合計時間ではなく、最も遅いサーバーが応答したときに計算を開始できます。

パフォーマンスに関しては、マルチコア マシンを使用している可能性があります。スレッド化することで、より多くのコアを利用できるため、パフォーマンスも向上します。

于 2013-10-29T07:59:49.457 に答える
1

これを単純なケースに要約しましょう。コンピューターにデュアル コア プロセッサが搭載されています。各コアは一度に 1 つのスレッドしか処理できないとしましょう (実際には、コアは多数のスレッドを非常に迅速に切り替えることができます)。

一度に 2 つのコードを実行するには、2 つのスレッドが必要です。2 番目のスレッドのコードを 1 番目のスレッドの最後に単純に追加した場合、2 番目のスレッドは 1 番目のスレッドのコードが完了するまで待機する必要があります。スレッド 1 はブロックしていると言われます。スレッド 2 は待機中と言われます。

スレッドには優れた用途があります。シーンのレンダリングがループで実行されるゲームを考えてみましょう。各フレーム間の処理が重いと、フレームレートが遅くなります。あなたはこれを避けたいです。職業はなんですか?負荷の高い処理を別のスレッドで実行し、オペレーティング システムが使用可能な CPU コアを最大限に活用することを信頼します。

于 2013-10-29T08:11:35.127 に答える
1

複数のスレッドを持つ主な理由は、計算を高速化することです。各スレッドは、入力データの一部に対して、複雑な計算の一部を実行します。プロセッサ コアと同じ数のスレッドを使用すると、各スレッドが自由に実行され、1 秒あたりの計算数が増加します。このポイント (コア数) を超えてスレッド数を増やしても、あまりメリットはありません。プロセッサ アーキテクチャの他の部分 (メモリ、プロセッサ キャッシュ、その他の共有リソース) については、それがボトルネックになり、ほとんどの場合、すべてのスレッドが待機することを余儀なくされないように注意する必要があります。

スレッドを使用する 2 つ目の理由は、メイン スレッド (通常は GUI スレッド) からすべての時間のかかる操作を削除することです。アプリケーションはよりユーザーフレンドリーになり、ユーザーはウィンドウの「フリーズ」を経験しなくなります。

スレッドを使用する 3 つ目の理由は、コードを少し高速化すると同時に単純化することです。データと共有リソース (Web サービス、データベース、特殊なハードウェア、プリンター) を操作する複雑な操作があり、その複雑な操作をいくつかの単純な操作に分割でき、データに応じて操作の一部を省略できるとします。 . スレッドの「パイプライン」を持つことができます。各スレッドは、データに対して 1 つの単純な操作を行い、一部のリソースに排他的にアクセスし、結果をパイプライン内の他のスレッドに送信します。すべてのビット データを最初から最後まで実行するスレッドが 1 つしかない場合よりも全体的なプロセスは高速に実行されますが、コードもそれほど複雑ではありません。

于 2013-10-29T08:25:42.910 に答える
0

スレッド化の目的は、別々のコードを同時に実行する必要性を満たすことです。一般に、ソースコードがある場合、ソースコードのすべての行が順番に実行されます。20 人の受信者にメールを送信する場合を考えてみましょう。すべてのメールを次々に送信する場合、合計待機時間は、メールが配信されるまでの合計時間です。メール送信ごとに 1 つずつ、合計 20 のスレッドを作成すると、待機時間はメールの最も遅い時間とほぼ同じになり、約 20 倍のスピードアップになります。また、コンピューターに対してチェス ゲームをプレイしているとします。エンジンは常に最良のバリエーションを考えなければなりませんが、その間にその時間は減少し、それをグラフィカルに表示したり、時には効果音を表示したりする必要があります。

于 2013-10-29T09:27:09.713 に答える