作为一个程序员,线程、进程、协程是我们必须掌握的最基础的知识。这就像数学家必须学习的基本几何原理一样。没有他们,我们就很难在编程世界中寸步难行。并发和并行并发和并行是我们经常听到的两个词。并发是指同时运行多个程序。例如,我们边打字边听歌。并行是指同一时刻,强调在同一时间点并行操作。显然,并行需要多核,而并发可以在单核上运行的程序之间切换。由于cpu的高速运行,看起来并发类似于并行执行。但本质上两者是不同的。多核计算机的处理器,具有多个逻辑CPU核心,可以在物理上同时执行多条指令。计算机的“核心数”是计算机拥有的核心总数。一台计算机可能有多个处理器,每个处理器可能有多个内核;核心数是所有处理器的核心总数。多线程允许程序通过同时在多个内核上运行来利用多核计算机。一般来说,两倍的内核等于两倍的计算能力(对于支持多线程的程序),尽管有些问题受限于CPU使用率以外的因素。这些问题不会带来多线程带来的巨大好处。多线程的意义有时程序需要在特定的时间做特定的事情。例如,我们有一个带有可见窗口的程序。该程序可能会进行大量后台数字处理,但它仍然可以响应用户事件(例如单击按钮并调整其大小),这可以通过异步处理来完成,这将需要您的线程之一重复检查GUI是否间隔执行工作,暂停正在进行的操作并处理GUI一段时间。很多事情都是这样完成的。然而,另一种可能更好的处理方法是使用线程。我们不需要担心程序在逻辑操作和GUI管理之间来回切换,OS会为你管理。即使只有一个内核,您仍然可以运行多个线程,操作系统将尽最大努力确保所有正在运行的进程中的所有正在运行的线程获得公平的CPU时间份额。多线程和多核的关系首先,两者没有必然联系。多线程可以在单核或多核上运行。一个线程可以在一个核上运行一段时间,下一时刻又在另一个核上运行。线程是内核调度的最小单位。一个进程可以有多个线程协同工作来完成某个任务。线程被包裹在进程中,进程为线程运行提供资源。这些过程不会相互影响。一个进程挂了,不影响其他进程。但是,如果一个进程中的一个线程出现问题,其他线程就无法正常运行。CPUCPU也叫芯,是单晶硅经过一定的生产工艺制造而成。CPU的所有计算、接收/存储命令、处理数据都由内核执行。CPU依靠其时钟来执行多个程序。通过时钟中断,它可以在不同的程序之间切换,这样就好像我们的程序是并行执行的一样。超线程技术超线程技术为CPU中的每个物理核心创建两个虚拟处理核心。物理内核为虚拟内核提供动力,然后虚拟内核负责任务处理。每个虚拟内核彼此相同,虽然都没有物理内核强大,但在未启用HT时,它们加起来远远超过了物理内核的功能。这些虚拟内核的使用允许CPU在内核之间实时委派任务。由CPU密集型操作(例如同时运行两个要求苛刻的程序)创建的超线程工作负载的好处会减慢单个物理内核的速度,而不管其原始功率如何,这些工作负载分布在处理器的虚拟内核之间。空间分配利用HT技术。使用两个虚拟内核同时处理任务,处理时间会更短,程序打开速度会更快,并且您的计算机在多任务处理过程中会保持更快的响应速度。简而言之,超线程提高了处理效率。多核的优点多核技术具有超线程技术的所有优点,并且具有更多的优势。超线程技术为每个物理内核使用两个虚拟内核,以更高效地处理任务,而多核技术则增加了物理内核的数量。因为单个物理内核比单个虚拟内核更强大,所以双核处理器比具有超线程的单核处理器更强大。许多较新型号的CPU是超线程和多核的,可实现更高的性能。
