LZ的好学态度与谨慎作风值得学习,赞一个先~
1、我不明白char型变量就是原子操作吗?怎么我实验的代码不是呢?。
并不是说char型变量就是原子操作,我之前所说的第一条讲到的是作为标志位来操作,这样的操作在汇编指令上是具有原子性的。至于LZ的例子里提到的++count操作并不具有原子操作,你的例子已经阐述得很清楚了,或许别的平台(比如32位)类似于++count操作是具有原子操作的,这个你自己核实,我并不能确定,因为平时很少使用汇编。
2、这样应该可以,没有不关中断的类似windows多线程编程的方法吗?
windows的多线程做法其底层也不过是一些汇编代码嘛,本质并没有改变,所以不要被它震慑住了或是觉得有多神奇,其多线程的操作是属于高层的做法了,在MCU下你自己也可以实现的,并不是太难,详细地可以参阅一下开源OS的信号量机制是如何实现的。
3、你说的前台程序是指主程序吗?
前台程序就是由main函数开始的运行分支,后台程序指中断程序。 |