什么是进程?
当一个措施开始运行时,它就是一个进程,进程包孕运行中的措施和措施所使用到的内存和系统资源。
而一个进程又是由多个线程所构成的。
什么是线程?
线程是措施中的一个执行流,每个线程都有本身的专有寄存器(栈指针、措施计数器等),但代码区是共享的,即差此外线程可以执行同样的函数。
什么是多线程?
多线程是指措施中包罗多个执行流,即在一个措施中可以同时运行多个差此外线程来执行差此外任务,也就是说允许单个措施创建多个并行执行的线程来完成各自的任务。
多线程的好处:
可以提高CPU的操作率。在多线程措施中,一个线程必需期待的时候,CPU可以运行其它的线程而不是期待,这样就大大提高了措施的效率。
多线程的倒霉方面:
线程也是措施,所以线程需要占用内存,线程越多占用内存也越多;
多线程需要协调和打点,所以需要CPU时间跟踪线程;
线程之间对共享资源的访谒会彼此影响,必需解决竞用共享资源的问题;
线程太多会导致控制太庞大,最终可能造成很多Bug;
接下来将对C#编程中的多线程机制进行探讨。为了省去创建GUI那些繁琐的法式,更清晰地迫近线程的素质,接下来的所有措施都是控制台措施,措施最后的Console.ReadLine()是为了使措施半途停下来,以便看清楚执行过程中的输出。
示例:
using System;
using System.Threading;
namespace Test
{
class TestThread
{
private static void FirstThreadFun()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " i
= " + i);
}
Console.WriteLine(Thread.CurrentThread.Name + " 执行完毕");
}
static void Main(string[] args)
{
//措施挪用了Main()函数时,就起动了一个进程,同时也启动了一个线程[这个线程就是主线程].
Thread.CurrentThread.Name = "MainThread";
//创建第一个线程
Thread firstThread = new Thread(new
ThreadStart(TestThread.FirstThreadFun));
//取名为 firstThread
firstThread.Name = "firstThread";
for (int z = 0; z < 20; z++)
{
if (z == 10)
{
firstThread.Start();
firstThread.Join();
}
else
{
Console.WriteLine(Thread.CurrentThread.Name + " z
= " + z);
}
}
Console.Read();
}
}
}
运行功效:
总结:
1.任何措施在执行时,,至少有一个主线程。