内卷老员工之单线程并发二

192 阅读2分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

单线程并发

接上文,之前已经讨论了多线程并发的内容,本文将继续探讨单线程并发相关内容。

单线程并发或同线程并发

经典多线程并发架构的替代方案是采用单线程或同线程的设计架构。而在单线程的架构中,必须要手动进行任务切换。单线程架构可以扩展为多个互不影响的单线程系统,线程之间不进行数据、资源共享,这可以称为同线程架构。同线程架构中,执行所有任务仍然在单独的线程中。

单线程并发的好处

全线程可见性

首先来说,单线程的设计解决了绝大多数并发方面的问题。当同一个线程执行所有任务时,可以避免诸如线程可见性、数据在线程中同步等多数线程并发问题。当使用多线程并发时,需要确保数据在线程间的可见性以及当数据被某一线程修改时,其他线程的数据同步问题。

无竞争条件

当只有单个线程对数据访问时,不会出现多线程对于数据的竞争问题。多线程的状态当多个线程访问同个数据结构,如果没有保证次序则可能出现线程对于资源的竞争。

控制任务企鹅换

在对于任务的控制切换时,可以控制任务发生的时间,确保所有的资源都得到最佳分配。小的工作增量会导致更多的任务切换。更大的工作增量导致更少的任务切换。任务切换希望最小化的开销。暂停一项任务并恢复另一项任务所花费的 CPU 周期被浪费了。CPU 时间本身不会为应用程序产生任何有用的工作。能够控制任务切换可以控制两项任务的切换顺序,通过控制执行时间,达到对于任务优先级的控制。

控制某种任务优先级

可以以某种方式实现单线程任务切换,以便可以将某些任务优先于其他任务。这意味着为某些任务提供比其他任务更多的 CPU 时间。而这变相实现了任务的执行顺序控制。多线程对于任务执行顺序的控制则相对复杂,需要借助额外的手段。

未完待续

后续

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。