社区
英特尔边缘计算技术
帖子详情
内存中一地址,同一时间,只能被单一线程访问还是可以被多线程并行访问
萨迪达斯
2013-04-30 07:16:44
谢谢
1 内存中一地址,同一时间,只能被单一线程访问还是可以被多线程并行访问
2 开发一个程序的所有线程都在一个核心里执行还是可以被多核分开执行
3 程序中新开一个线程执行静态方法是将另外分一片内存同时将方法copy过去吗
谢谢大家了,
...全文
927
6
打赏
收藏
内存中一地址,同一时间,只能被单一线程访问还是可以被多线程并行访问
谢谢 1 内存中一地址,同一时间,只能被单一线程访问还是可以被多线程并行访问 2 开发一个程序的所有线程都在一个核心里执行还是可以被多核分开执行 3 程序中新开一个线程执行静态方法是将另外分一片内存同时将方法copy过去吗 谢谢大家了,
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
萨迪达斯
2013-05-04
打赏
举报
回复
昨天无意中看了一片intel的文章,原来版主用的是Amdahl定律,多线程避免串行很重要。
萨迪达斯
2013-04-30
打赏
举报
回复
第一个问题后面没怎么懂,前面意思就是会排队访问了。其实我的情况是新开了2个线程,每过10刷新加载2种不同的数据,加载时调用同一个静态的方法发出请求,里面有用到一个静态变量。然后我做的时候就想,这两个线程会不会同时执行到要访问这个静态变量而排队,如果那样的话我就想改成实例的。
threenewbee
2013-04-30
打赏
举报
回复
注意我说的是1/10的cpu时间,如果你有100行代码,有1行访问了竞争的内存,那么因为内存访问需要的周期远远超过寄存器存取和指令,那么cpu时间都会超过1/10。而且由于缓存同步的需要,程序实际上执行的更慢。甚至可能出现,用2个cpu还算不过1个cpu的情况。
threenewbee
2013-04-30
打赏
举报
回复
是这样的,现代的处理器具有缓存,甚至多层次的缓存,如果多个线程要同时访问同一个内存的数据,那么为了保证程序不出错,所有的线程都必须等待,不是说不能访问,而是说这样做的代价很高。我们假设你的程序中有1/10的cpu时间在访问这个内存的数据,你有32个并行的线程,那么很显然,你的理论性能上限较之单线程程序为1/(0.9/32+0.1)=7.8,而且随着处理器的增多,这样的浪费更大,无论你采用1百个CPU还是1万个CPU,都不可能超过10。而我们理想中期待如果有32个CPU,那么程序能快32倍,如果有128个CPU能快128倍。 问题三我说了,操作系统只为每个线程开辟线程上下文和堆栈的空间。
萨迪达斯
2013-04-30
打赏
举报
回复
谢谢,我还有40分在另外一个帖子,好像被删了,不知道分还在不。话说你是版主==! 我好荣幸得到你的回答。 然后我在请教下您:现在多核的cpu的多条同时执行的线程也是不能访问同一内存地址的吗? 对于问题三我的意思不是代码,是说本来静态方法只有一个空间执行,多线程调用的话会开多个空间执行吗?因为每个线程的参数都不同。thks!
threenewbee
2013-04-30
打赏
举报
回复
1 内存中一地址,同一时间,只能被单一线程访问还是可以被多线程并行访问 对于x86这样的共享存储,竞争总线的方式,“同一时间”,当然只能有一个线程访问。但是要明确,可能其他线程会访问这个内存数据的脏数据的缓存,也可能因为对内存的访问缺乏原子性而存在同步问题。 2 开发一个程序的所有线程都在一个核心里执行还是可以被多核分开执行 如果这些线程没有相关性,那么OS会调度它们在多个内核/处理器上运行。 3 程序中新开一个线程执行静态方法是将另外分一片内存同时将方法copy过去吗 当然不是,不同的线程拥有自己的线程上下文(其实就是寄存器值)和自己的堆栈,至于代码,是共享的。
【操作系统】进程、
线程
、协程和并发、
并行
文章目录一、并发介绍1. 进程和
线程
2. 并发和
并行
(1)并发(2)
并行
(3)并发和
并行
的不同3. 协程和
线程
前言前言前言参考链接 一、并发介绍 1. 进程和
线程
进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。
线程
是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 一个进程可以创建和撤销多个
线程
;同一个进程中的多个
线程
之间可以并发执行。 2. 并发和
并行
并发和
并行
最开始都是操作系统中的概念,表示的是 CPU 执行多个任务的方式
linux让多进程等待到
同一时间
,Linux :并发和
并行
,
多
线程
和多进程,同步和异步的关系...
1.进程、
线程
(1)进程概念进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存...
【linux】
多
线程
线程
是操作系统调度的最小单位 进程是操作系统分配资源的最小单位
线程
是什么
线程
:操作系统调度的最小单位,
线程
被包含在进程中,是进程中实际的运行单位。 一个
线程
指的是进程
中一
个
单一
顺序的控制流,一个进程可以并发多个
线程
,每个
线程
并行
执行不同任务
线程
是独立调度和分派的基本单位 同一进程的多个
线程
将共享进程中的全部系统资源,ege:进程的虚拟
地址
空间,文件描述符表 同一进程的多个
线程
有属于自己的调用栈,自己的寄存器 一个进程可以有很
多
线程
,每个
线程
并行
执行不同的任务 有时
线程
Java的
多
线程
和并发性
多
线程
:
多
线程
是在同一个程序内部
并行
执行,因此会对相同的
内存
空间进行并发读写操作 并发性: 计算机能在
同一时间
点
并行
执行多任务或多进程。虽然并不是真正意义上的“
同一时间
点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。 并发模型与分布式系统的相似性: 在并发系统中
线程
之间可以相互通信。在分布式系统中进程之间也可以相互通信(进程有可能在不同的机器中)。
线程
和进程之间具有很多相似的特性。这也就是为什么很多并发模型通常类
万字长文主讲介绍CSharp
多
线程
、多进程
并行
开发
1 前言 要说
多
线程
我们明确几个概念 1.1 名词 1.1.1 操作系统 操作系统是计算机系统中的一个系统软件,是一些程序模块的集合 它们能以尽量有效、合理的方式组合和管理计算机的软硬资源 系统效率,资源利用率 CPU利用率充足与否?I/O设备是否忙碌? 合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能 各种软硬件资源的管理是否公平合理 如果不公平、不合理、则可能产生问题 两种角度:用户界面 与 编程接口 使得用户能够灵活、方便地使用 计算机,使得整个计算机系统高效运行
英特尔边缘计算技术
567
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章