时间:2021年7月17日15:36:25
1.并发与并行
并行:同一时刻内同时处理多个操作,强调同一时刻点同时发生。
并发:同一时间段内可以交替处理多个操作,强调同一时段内交替发生。
1.2 硬件并发与任务切换
1.双核处理器并行执行 对比 单核处理器并发执行
2.实际上,多核并发更常见,处理的任务数更多。
1.3 多线程并发与多进程并发
相比与任务并发;实际上,计算机术语中用得更多的是线程与进程。
任务:就是达到某一目的的操作。可以是一个进程,也可以是一个线程。
进程:是资源分配的基本单位。可以看作一个独立的程序,具有完备的数据空间和代码空间。把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
线程:执行处理器调度的基本单位。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。因为每个线程一个堆栈,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程更易相互作用。
一个进程和一个线程最显著的区别是:线程有自己的全局数据。线程存在于进程中,因此一个进程的全局变量由所有的线程共享。由于线程共享同样的系统区域,**操作系统分配给一个进程的资源对该进程的所有线程都是可用的,**正如全局数据可供所有线程使用一样。
1.4使用并发的原因
使用并发的原因主要有两个:关注点分离和性能。
关注点分离:通过将相关的代码放在一起并将无关的代码分开,可以使你的程序更容易理解和测试,从而减少出错的可能性。你可以使用并发来分隔不同的功能区域,即使在这些不同功能区域的操作需要在同一时刻发生的情况下;
更高效的性能:为了充分发挥多核心处理器的优势,使用并发将单个任务分成几部分且各自并行运行,从而降低总运行时间。根据任务分割方式的不同,又可以将其分为两大类:一类是对同样的数据应用不同的处理算法(任务并行);另一类是用同样的处理算法共同处理数据的几部分(数据并行)。
2.C语言多线程
2.1 多线程就是多任务处理方式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。
-
基于进程的多任务处理是程序的并发执行。
-
基于线程的多任务处理是同一程序的片段的并发执行。
下一节: Day1-C语言多线程1-基于线程