MagicARM2410,用QT控制跑马灯闪动(QT界面用designer做好了,驱动程序也有,其它的就不知道怎么做了)

MagicARM2410,用QT控制跑马灯闪动(QT界面用designer做好了,驱动程序也有,其它的就不知道怎么做了),第1张

就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修瞎旁段改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

总之呢,就是能够优化

关键在于两个地方:

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环昌橘境啥的?就是往里...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12558627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存