第四章随笔

第四章 并发编程

  本章论述了并发编程,介绍了并行计算的概念,指出了并行计算的重要性;比较了顺序算法与并行算法, 以及并行性与并发性;解释了线程的原理及其相对于进程的优势;解释了死锁问题, 并说明了如何防止并发程序中的死锁问题;讨论了信号量, 并论证了它们相对千条件变量的优点;还解释了支待 Linux 中线程的独特方式。

并行计算

  基于分治原则(如二叉树查找和快速排序等)的算法经常表现出高度的并行性,可通过使用并行或并发执行米提高计算速度。并行计算是一种计算方案,它尝试使用多个执行并行算法的处理器 更快速地解决问题。

  井行性与并发性

  并行算法只识别可并行执行的任务,但是它没有规定如何将任务映射到处理组件。在理想情况下,并行算法中的所有任务都应该同时实时执行。然而,真正的并行执行只能在有多个处理组件的系统中实现,比如多处理牉或多核系统。在单CPU系统中,一次只能执行一个任务。在这种情况下,同的任务只能并发执行,即在逻辑上并行执行。在单CPU系统中并发性是通过多任务处理来实现的。

线程

线程的原理

线程是某进程同一地址空间上的独立执行单元。

线程的优缺点

与进程相比,线程有许多优点。

线程创建和切换速度更快

线程的响应速度更快

线程更适合并行计算

线程的缺点

由于地址空间共享,线程需要来自用户的明确同步。

许多库函数可能对线程不安全。通常,任何使用全局变量或依赖于静态内存内容的函数,线程都不安全。

在单CPU系统上,使用线程解决问题实际上要比使用顺序程序慢

线程操作

线程的执行轨迹与进程类似。线程可在内核模式或用户模式下执行。在用户模式下,线
程在进程的相同地址空间中执行,但每个线程都有自己的执行堆栈。线程是独立的执行单
元,可根据操作系统内核的调度策略,对内核进行系统调用,变为挂起、激活以继续执行
等。为了利用线程的共享地址空间,操作系统内核的调度策略可能会优先选择同一进程中的
线程,而不是不同进程中的线程。截至目前,几乎所有的操作系统都支持POSIXPthread,
定义了一系列标准应用程序编程接口(API)来支持线程编程。下面,我们将讨论和演示
Linux中的Pthread并发编程(Goldt等1995;IBM;Love2005;LinuxManPageProgect
2017)。

 

posted @ 2022-10-16 16:17  20201214罗云帆  阅读(15)  评论(0编辑  收藏  举报