C#:多线程与异步

多线程


介绍

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

--来自百度百科

原理

实现多线程是采用一种并发执行机制。

并发执行机制原理:简单地说就是把一个处理器划分为若干个短的时间片,每个时间片依次轮流地执行处理各个应用程序,由于一个时间片很短,相对于一个应用程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果。

多线程就是把操作系统中的这种并发执行机制原理运用在一个程序中,把一个程序划分为若干个子任务,多个子任务并发执行,每一个任务就是一个线程。这就是多线程程序 。

--来自百度百科

简单来说就是,操作系统将CPU运行的时间分为各个时间片,每个时间片都轮流执行各个应用程序。但是由于CPU执行效率过高,而且每个时间片又足够短,让我们错以为每个应用程序在同时运行。

分类

  • 原生线程:

        由操作系统管理的线程被称为原生线程。

        线程切换:

                主动切换:当前线程对应的任务主动要求暂停当前线程。

                被动切换:线程运行超过一定时间后,操作系统会强制切换到下一个线程。

  • 托管线程

        由.NET管理的线程被称为托管线程。

        由于各个系统多线程的实现是不同的,.NET Core基于原生线程搭建了一组线程模型。这样就可以让托管代码在不同的平台上以相同的线程模型来运行。

        目前.NET Core中托管线程和原生线程的关系是1:1或1:0。托管线程运行以后才会与原生线程关联。

        简单来说,.NET Core运行时通过统一标准的线程操作接口,针对不同的系统通过不同的实现调用系统的API来操作原生线程。而对我们.NET开发人员来说只需要调用运行时封装好的统一的方法,就可以实现对不同的操作系统线程的调用。

你可能感兴趣的:(C#,c#)