多核计算与程序设计 - 01 基础知识 之一 多核编程与单核多线程和分布式编程的区别

本文摘自《多核计算与程序设计》,探讨了多核编程与单核多线程在锁竞争、线程执行、负载均衡、CPU Cache存取和任务调度策略上的区别,并对比了多核编程与多机分布式编程在共享存储、分布式计算和编程环境方面的差异,旨在帮助读者理解并优化多核系统性能。
摘要由CSDN通过智能技术生成

这个分类的知识来自周伟明先生的《多核计算与程序设计》一书,在此把书中对我个人帮助较大的部分整理出来,以便更容易的在工作中加以应用。


一,多核编程与单核多线程的区别


1, 锁竞争导致的串行化的区别

在单核系统中如果某个线程获取了锁,那么这个线程将获取CPU的运行时间,其他线程将被阻塞。但CPU始终处于运行状态,影响计算时间的其实只是加锁和解锁的时间。并不会发生CPU空闲的现象。

但多核系统中情况发生了本质的变换,如果线程A和B使用同一把锁,但运行在不同的CPU上,如果A得到了锁,那么A线程所在CPU则处于运行状态,线程B处于阻塞状态,B线程所在CPU则处于空闲状态。我们浪费了一个CPU的运算时间。

图示:

cpu_lock_diam



2, 线程分解与执行的区别

在单核CPU中,对于客户端软件而言,采用多线程方式通常都是创建线程并将其放在后台执行,避免阻塞客户界面操作,提高性能。而在多CPU中,线程的分解将不再局限与此。多核CPU分解多线程是为了让计算分配到各个CPU核上去执行。大幅度提高工作效率。


3, CPU负载均衡的区别

在单核CPU中,并不需要考虑CPU间负载均衡的问题,因为无论线程如何切换,CPU始终处于工作状态,它并不会影

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值