总之呢,就是能够优化
关键在于两个地方:
1. 编译器的优化 (请高手帮我看看下面的理解)
在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;
当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致
当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致
当该寄存器在因别的线程等而改变了值,原变量的值不会改变,从而造成应用程序读取的值和实际的变量值不一致
举一个不太准确的例子:
发薪资时,会计每次都把员工叫来登记他们的yhk号;一次会计为了省事,没有即时登记,用了启陆以前登记的yhk号;刚好一个员工的yhk丢了,已挂失该yhk号;从而造成该员工领不到工资
员工 -- 原始变量地址
yhk号 -- 原始变量在寄存器的备份
2. 在什么情况下会出现(如1楼所说)
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的磨誉非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
以WIN7系统为例(毕竟是现在的主流 *** 作系统嘛)1:通过开始按钮,打开附件带弯,找到启动文件夹。找到后右击启动文件夹,选择打开命令。2:点蠢衫闷击打开后,系统会将启动文件夹打开。3:找到指定程序的快捷方式,例如印象笔记,如果桌面上没有你想要的快捷方式,可以通过我的另一个4:找到指定的快捷方式后,将塌颂快捷方式复制或拖到刚刚打开的启动文件夹下面。5:重启系统,开机后,刚刚设置的程序就会自动打开了。1、想在板子上运行用QT编好的程歼枯序,必须要在PC的linux系统里用QT编吗? 不需要耐改团.但是必须经过交叉编译. (window 无法进行交叉编译.) 2、在windows系统里编好的QT程序,经过交叉编译后能直接运行在板子上吗?还是板子需要弄个QT环昌橘境啥的?就是往里...欢迎分享,转载请注明来源:内存溢出
评论列表(0条)