1. プロセス、プロセスは、リソース割り当ての基本単位であり、スケジューリング操作の基本単位です。プロセスには少なくとも1つのスレッドが含まれます。
スレッド。スレッドは、操作を実行するプロセスの最小単位、つまりプロセッサのスケジューリングを実行する基本単位です。スレッドは、プロセスが所有するリソースを使用できます。
マルチスレッド、オープンqq音楽、曲を聴く、mvを見る、ダウンロード。
マルチプロセス、qq音楽の実行、Neteaseクラウド音楽、クールな音楽...
第2に、 スレッドを導入するオペレーティングシステムでは、通常、プロセスはリソース割り当ての基本単位として使用され、スレッドは独立した操作と独立したスケジューリングの基本単位として使用されます。スレッドはプロセスよりも小さいため、基本的にシステムリソースを持たないため、そのスケジューリングのオーバーヘッドは比較的小さく、システム内の複数のプログラムの同時実行の度合いを効果的に改善できます。
3. C#では、複数のスレッドを使用してコードを並列に実行でき、各スレッドには独立した実行パスがあり、他のスレッドと同時に実行できます。
C#プログラムは、CLRとオペレーティングシステム( "メインスレッド")によって自動的に作成される単一のスレッドで始まり、追加のスレッドを作成するための複数のスレッドを持っています。
四、 Demo
using System;
using System.Threading; //引入命名空间
namespace ConsoleApplication1
{
class ThreadTest
{
static bool done;
static object locker = new object();
static void Main(string[] args)
{
//三种实例化方法
Thread go = new Thread(Go); //线程1 调用Go方法
//Thread go = new Thread(new ThreadStart(Go)); //用委托指定线程从哪里执行
//Thread go = new Thread(delegate () { Console.WriteLine("方法"); }); //用匿名方法启动线程
Thread ro = new Thread(Ro); //线程2 调用Ro方法
Thread go_1 = new Thread(Go); //线程3 同样调用Go方法
go.Start(); //开启线程1
go_1.Start(); //开启线程3
go.Join(); //等待当前线程结束方可执行下个线程
if (!(go_1.IsAlive)) //IsAlive返回当前线程状态,Start()到结束为true,反之false
{
ro.Start(); //开启线程2
Go();
}
}
static void Go()
{
lock (locker) //加锁
{
if (!done)
{
done = true;
for (int i = 0; i < 5; i++)
{
Thread.Sleep(1000);
Console.WriteLine("Done");
}
}
}
}
static void Ro()
{
Console.WriteLine("Rooo");
}
}
}