C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のスレッド


スレッドは、プログラムの実行パスとして定義されます。各スレッドは、固有の制御フローを定義します。アプリケーションに複雑で時間のかかる操作が含まれる場合は、各スレッドが特定のジョブを実行するように、異なる実行パスまたはスレッドを設定すると役立つことがよくあります。

スレッドのライフサイクルは、System.Threading.Threadクラスのオブジェクトが作成されたときに開始し、スレッドが終了または実行を完了したときに終了します。

以下は、スレッドのライフサイクルにおけるさまざまな状態です-

  • 未開始の状態 -スレッドのインスタンスが作成されたが、Startメソッドが呼び出されていない状況です。

  • 準備完了状態 -スレッドを実行する準備ができてCPUサイクルを待機している状況です。

  • 実行不可能な状態 -スレッドは実行可能ではありません

    • スリープメソッドが呼び出されました
    • 待機メソッドが呼び出されました
    • I/O操作によってブロックされています
  • デッドステート -スレッドが実行を完了したとき、または中止されたときの状況です。

以下は、スレッドを作成する方法を示す例です-

using System;
using System.Threading;

namespace Demo {
   class Program {
      public static void ThreadFunc() {
         Console.WriteLine("Child thread starts");
      }

      static void Main(string[] args) {
         ThreadStart childref = new ThreadStart(ThreadFunc);
         Console.WriteLine("In Main: Creating the Child thread");
         Thread childThread = new Thread(childref);
         childThread.Start();
         Console.ReadKey();
      }
   }
}

出力

In Main: Creating the Child thread
Child thread starts

  1. Rubyスレッドの使用方法:わかりやすいチュートリアル

    Rubyのスレッドとは何ですか? スレッドにより、Rubyプログラムは同時に複数のことを実行できます。 次のようなもの : 複数のファイルを読み取る 複数のウェブリクエストの処理 複数のAPI接続を確立する スレッドを使用した結果、マルチスレッドのRubyプログラムが作成され、作業をより迅速に行うことができます。 しかし、1つの警告… Rubyアプリケーションを実行するデフォルトの方法であるMRI(MatzのRuby Interpreter)では、 i/oバウンドアプリケーションを実行する場合にのみスレッドの恩恵を受けます。 。 この制限は、 GIL(グローバルインタープリター

  2. Rubyでの非同期スレッドのテスト

    スレッドと非同期環境は、最初は少し注意が必要です。相互作用を整理するための優れたメンタルモデルがないと、トラブルに巻き込まれ、予期しない結果に終わる可能性があります。その上、非同期コードのテストは、適切なツールやテストパターンがないと難しい場合があります。 スレッドを人として、共有オブジェクトを所有可能な「もの」として考えると、マルチスレッドシステムの動作を整理するのに役立ちます。このエピソードでは、非同期Rubyコードのテストについてすべてを学ぶための例を紹介します。 RailsやRack、またはWebブラウザーのフロントエンドとして非同期環境にあるアプリケーションを使用している場合。ラ