社区
英特尔边缘计算技术
帖子详情
多核cpu下的多线程和单核cpu下的多线程在编程中有那些区别?
goding
2008-05-14 09:30:10
多核cpu下的多线程和单核cpu下的多线程在编程中有那些区别?有多核cpu下编写多线程需要要注意的问题有那些?(c#方面)
...全文
586
4
打赏
收藏
多核cpu下的多线程和单核cpu下的多线程在编程中有那些区别?
多核cpu下的多线程和单核cpu下的多线程在编程中有那些区别?有多核cpu下编写多线程需要要注意的问题有那些?(c#方面)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tt_timon
2008-05-29
打赏
举报
回复
因为单核处理器只能将多个指令流交错执行,并不能真正将它们同时执行,所以,单核 结构上的多线程应用程序的性能就受到了限制。在单核平台上,多线程一般都被当做是一种能够实现延迟隐藏的有效编程手段。
单 核平台上的这种性能瓶颈在多核体系结构中就不存在了。在多核平台上,各线程根本不需要为了得到某种资源而挂起等待,因为各线程都是在相互独立的执行核上并 行运行的。例如,假设有两个线程都要执行移位操作,那么,在单核平台上,两个线程需要竞争唯一的移位单元,因而必须顺序执行,而对于双核平台而言,因为存 在两个移位单元,所以两个线程能够并行执行而无须竞争。
多 核平台为开发人员提供了一种优化应用程序的渠道,那就是通过仔细分配加载到各线程(或者各处理器核)上的工作负载(也就是实现各线程的负载均衡)就能够得 到性能上的提升。并且,开发人员也可以对应用程序代码加以优化,使其能够更加充分地使用多个处理器资源,进而达到提升应用程序性能的目的。
在面向多核平台设计多线程应用程序的时候,开发人员必须采取与面向单核平台时不同的设计思想。在单核平台上,为了简化多线程应用程序的编写和调试,开发人 员可能会作一些假设。但是这些假设可能不适用于多核平台。对于这两种平台,设计思想的不同之处主要体现在存储缓存(memory caching)和线程优先级(thread priority)两个方面。
在 存储缓存方面,多核平台上的每个处理器核都拥有自己的cache。在某个时间点上,一个处理器核上的cache与另一个处理器核上的cache可能会出 现不同步的现象。下面给出一个例子来解释可能出现的这种cache不同步问题。假设有两个线程分别运行在双核处理器的两个执行核上,线程1在执行核1上运 行,线程2在执行核2上运行,而两个线程分别对邻近的存储器单元进行读写操作。由于cache存储器是基于局部性原理来工作的,故不同的数据可能存放在 cache的同一行中。因此,即使某个线程所需的位于某个cache块中的数据没有被重写过,存储系统还是可能会将该cache块标记为无效。这个现象就 是众所周知的伪共享(false sharing)问题。但是在单核平台上,因为只有唯一的cache供各线程共享,所以就不存在cache同步问题。
在 单核与多核平台上采用相同的线程优先级策略也会导致不同的程序行为。例如,假设一个应用程序有两个进程,这两个进程的优先级不同。在进行性能优化的时候, 开发人员会假定优先级较高的线程可以一直享用执行资源,而不会受到优先级较低线程的干扰。这在单核平台上是正确的,因为操作系统的调度程序不会为优先级较 低的线程分配CPU资源,而对于多核平台而言,因为调度程序是在不同的执行核上调度这两个线程,所以两个线程是同时执行的,也就是说在这种条件下,线程的 优先级不起作用。如果开发人员仍然遵循优先级较高的线程不会受到优先级较低线程的干扰的思想对代码进行优化,这样的代码在多核和多处理器系统上运行就会非 常不稳定。
appleshao
2008-05-29
打赏
举报
回复
这问题我也想问 UP上去。
goding
2008-05-24
打赏
举报
回复
up
sageking2
2008-05-24
打赏
举报
回复
没什么区别.
多核
和
单核
中
多线程
及单线程的特点
多核
和
单核
中
多线程
及单线程的特点 附关键词 参考文献 排版正规
多线程
与
多核
编程
多线程
与
多核
编程
打通Linux脉络系列:进程、线程和调度
本课程分成4个组成部分,每次课60分钟,每次课后留下3-4个练习题,可以在Linuxer公众号留言讨论答案和做题心得。第一部分:深入彻底搞清楚进程生命周期,进程生命周期创建、退出、停止、以及僵尸是个什么意思;第二部分:深入分析进程创建的写时拷贝技术、以及Linux的线程究竟是怎么回事(为什么称为轻量级进程),此部分也会搞清楚进程0、进程1和托孤,以及睡眠时的等待队列;第三部分:搞清楚Linux进程调度算法,不同的调度策略,实时性,完全公平调度算法;第四部分:讲解Linux
多核
下
CPU
、中断、软负载均衡、cgroups调度算法以及Linux为什么不是一个实时操作系统。
计算机后端-Java-Java核心基础-第19章 IDEA的使用与
多线程
11.
单核
与
多核
CPU
的任务执行_并行与并发.avi
计算机后端-Java-Java核心基础-第19章 IDEA的使用与
多线程
11.
单核
与
多核
CPU
的任务执
java
多线程
1、
多线程
有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用
多线程
就好...
多核
CPU
上的
多线程
才是真正的
多线程
,它能让你的多段逻辑同时工作,
多线程
,可以真正发挥出
多核
CPU
的优势来,达到充分利用
CPU
的目的。
英特尔边缘计算技术
566
社区成员
7,027
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章