0
点赞
收藏
分享

微信扫一扫

C#多线程_Thread.Join()


什么是进程?

  当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。
  而一个进程又是由多个线程所组成的。

什么是线程?

  线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

什么是多线程?

  多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

多线程的好处:

  可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。

多线程的不利方面:

  • 线程也是程序,所以线程需要占用内存,线程越多占用内存也越多
  • 多线程需要协调和管理,所以需要CPU时间跟踪线程
  • 线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题
  • 线程太多会导致控制太复杂,最终可能造成很多Bug

using System;
using System.Threading;

namespace Test
{
class Program
{
static void Main(string[] args)
{
//程序调用了Main()函数时,就起动了一个进程,同时也启动了一个线程[这个线程就是主线程].
Thread.CurrentThread.Name = "MainThread";

//创建第一个线程
Thread firstThread = new Thread(new ThreadStart(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();
}

private static void FirstThreadFun()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " i = " + i);

}
Console.WriteLine(Thread.CurrentThread.Name + " 执行完毕");
}
}
}

C#多线程_Thread.Join()_c#

  • 1.任何程序在执行时,至少有一个主线程
  • 2.​​firstThread.Start()​​​启动了一个线程后,用​​firstThread.Join()​​这个方法加入一个线程【即:暂停了主线程的运行】,那么操作系统就会马上执行这个新加入的线程
  • 3.​​Join​​ 就是加入的意思,也就是说新创建的线程加入到进程中,并马上执行

  我们通过其中提供的Thread类来创建和控制线程,ThreadPool类用于管理线程池等
  (此外还提供解决了线程执行安排,死锁,线程间通讯等实际问题的机制)

Thread类有几个至关重要的方法,描述如下:

  • ​Start()​​:启动线程;
  • ​Sleep(int)​​:静态方法,暂停当前线程指定的毫秒数;
  • ​Abort()​​:通常使用该方法来终止一个线程;
  • ​Suspend()​​:该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复;
  • ​Resume()​​:恢复被Suspend()方法挂起的线程的执行;


举报

相关推荐

0 条评论