单CPU多核 和 多CPU多核

CPU的核心和线程数是没有关系的。

支持超线程技术的CPU,单个核心可以同时并发两个线程进行协同工作,相比单线程效率更高,但也达不到想象中性能翻倍的效果。

而不支持超线程技术的CPU,一个核心就只能以一个线程进行运算。

因为这个原因,现在有些人喜欢把支持超线程CPU的核心乘以2后进行比较,比如把支持超线程的双核CPU和四核进行比较,也就出现了真四核和伪四核的说法。

---------------------------------------------------------------------------------------------------------------------------------------------------

现代的体系,一般 CPU 会有多个核心,而多个核心可以同时运行多个不同的线程或者进程。

当每个 CPU 核心运行一个进程的时候,由于每个进程的资源都独立,所以 CPU 核心之间切换的时候无需考虑上下文。

当每个 CPU 核心运行一个线程的时候,由于每个线程需要共享资源,所以这些资源必须从 CPU 的一个核心被复制到另外一个核心,才能继续运算,这占用了额外的开销。换句话说,在 CPU 为多核的情况下,多线程在性能上不如多进程。

因而,当前面向多核的服务器端编程中,需要习惯多进程而非多线程

多核CPU具有多个完整的计算单元,在运行多线程程序的时候,多个核心的运行情况可以参考单个核心的运行情况,来看待线程的运行,换入,换出,阻塞,资源竞争等问题。

----------------------------------------------------------------------------------------------------------------------------------------------------

对于多核CPU就要考虑线程之间的资源竞争和线程之间的隔离性,数据的一致性等问题,做好并发控制。

----------------------------------------------------------------------------------------------------------------------------------------------------

单处理机 和 多处理机 在运行多线程的时候的情形可以类比,都会出现 丢失修改,脏读,不可重复读 等情形,只要处理好这三种情况即可,不必继续深究了,操作系统,硬件什么的水太深了。咱们往高级程序设计方向去吧。不要把精力浪费在这些事情上了。

你可能感兴趣的:(单CPU多核 和 多CPU多核)