C#并行编程基础概念

了解并行编程之前,我们有必要了解一下并行编程开发过程中遇到的一些基础概念。

1、同步:从字面上来理解,我们首先认为同步是一起执行的意思,实际上在程序开发中同步的意思刚好相反。这里的同步是指一个任务必须基于另一个任务完成后才能执行,是一个接一个的关系。举个例子,如果你想约你领导吃饭,你会给你领导打电话,直到收到你领导明确的答复,你才会去预定餐位,也就是说,你预定餐位的动作是基于你领导同意的基础之上。

2、异步:异步的概念是指两个任务是相互独立的,彼此之间互不干涉。同一个例子,你想约你领导吃饭,这时候你突然想起他正在开会,所以你就给他发了一条短信,告诉他在哪家餐厅吃饭,然后你就去预定餐位。也就是说,你不必在你领导答复的基础上去预定餐位。

3、并行和并发:把这两个概念放在一起是因为在某种意义上两者是相同的。我们知道,一个处理器在同一时间只能执行一条线程,如果这时候多条线程同时执行,处理器不得不使用一种交错的方式执行多条线程,这其实就是一种并发。就像我们使用键盘拼写字符的时候,我们只有10个手指头,键盘上却有26个字母,我们只能通过不断交错的方式打出我们需要的字符。试想一下,如果我们有26个手指头,是不是就可以一个指头控制一个字符?这其实就是一种并行,一台拥有四核(处理器)的计算机上同时运行四个线程,就是一种并行。

无论是同步、异步、并行或者并发,都是基于多线程模式下的编程概念。

4、进程:进程是系统分配资源的基本单位。我的理解是一个应用程序就是一个进程。

5、线程:CPU执行任务的基本单位。

6、线程池:顾名思义,线程池是用来管理线程的,就像水池一样,有很多水才能称之为池。

应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。

猜你喜欢

转载自blog.csdn.net/luoye4321/article/details/36487523