何为并发

计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。

使用并发

  1. 使用并发的第一种方法,是将应用程序分为多个独立的进程,它们在同一时刻运行,就像同时进行网页浏览和文字处理一样。

    优点是进程间通信不复杂,但速度慢、开销大(多个进程有固定的开销:进程的启动、管理进程等)。

  2. 在单个进程中运行多个线程。

    进程中的所有线程都共享地址空间,并且所有线程访问到大部分数据———全局变量仍然是全局的,指针、对象的引用或数据可以在线程之间传递。

    地址空间共享,以及缺少线程间数据的保护,使得操作系统的记录工作量减小,所以使用多线程相关的开销远远小于使用多个进程。不过,共享内存的灵活性是有代价的:如何保证数据的一致性。

为何使用并发?

  1. 分离关注点 —— 基于概念设计

  2. 提升性能

    利用并发提升性能的方式:

    • 任务并行(task parallelism)

    • 数据并行(data parallelism)

并行化的缺点

  1. 使用并发容易造成代码难理解,编写和维护多线程的代码成本提升,同时额外的复杂性可能引起跟多的错误。

  2. 使用多线程,系统需要分配内核资源和堆栈空间,开销会对性能产生影响。

  3. 同时,线程是有限的资源。过多的线程会使性能整体缓慢。运行越多的线程,操作系统就需要做越多的上下文切换。

使用并发的策略

它拥有大幅度提高应用性能的潜力,但它也可能使代码复杂化,使其更难理解,并更容易出错。因此,只有应用中具有显著增益潜力的性能关键部分,才值得并发化。当然,如果性能收益的潜力仅次于设计清晰或关注点分离,可能也值得使用多线程设计。

作者

Hu

发布于

2021-08-16

更新于

2021-08-16

许可协议

评论