前言
相同线程是一个从单线程系统扩展到多个相同的单线程的系统的并发模型,结果是多个相同的线程在计算机中并行执行。
一个相同线程的系统不是纯粹的单线程系统,因为它包含多个线程,每个线程执行就像一个单线程系统,所以用相同线程或者同一线程命名更加合理。
一、为什么用单线程系统?
你可能会想为什么每个人都能设计出单线程系统。单线程系统受欢迎的原因是因为单线程系统的并发模型比多线程系统的并发模型更加简单。单线程系统线程之间不共享任何状态(对象/数据),单线程系统可以不使用任何并发数据结构,并且更好地利用CPU和CPU缓存。
遗憾的是,单线程系统不能很好的利用现代CPU,现代CPU通常情况下拥有多个CPU内核,每个CPU内核的功能就像一个独立的单核CPU,一个单线程系统只能利用CPU中的一个内核,模型如下:
二、相同线程(单线程系统的扩展)
为了充分的利用CPU的内核,一个单线程系统可以扩展到利用整个计算机。
一个CPU内核执行一个线程: 相同线程系统通常让计算机中每个CPU内核执行一个线程,如果一个计算机有4个CPU,每个CPU拥有4个CPU内核,让每个CPU内核执行一个线程的示例如下:
三、不共享状态(数据)
一个相同线程系统与传统的多线程系统相似,因为一个相同线程系统有多个线程同时执行,但是两者有一些区别。
相同线程系统与多线程系统不同的是相同线程系统不共享状态(或不共享数据),当产生并发访问时不共享数据,没有并发数据结构等等。
不共享数据让相同线程系统看上去像单线程系统。因为相同线程系统可以包含多个单线程,因此取名相同线程系统更加合理。
相同线程系统基本含义是进程同时包含处理多个相同的线程,在相同线程系统中并发时没有线程共享数据。