|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教一個嵌入式系統(tǒng)編程的概念問題 |
| 作者:onebyte 欄目:嵌入式系統(tǒng) |
在編程中對全局變量進行原子操作(用信號燈)和用volatile修飾全局變量有什么區(qū)別?是不是用了volatile就可以不再用原子操作了 |
| 2樓: | >>參與討論 |
| 作者: sysdsn 于 2006/6/1 21:13:00 發(fā)布:
錯 采用全局變量進行原子操作用VOLITALE是不能解決問題的。 芯艦數(shù)碼工作室 QQ: 308955632 MSN: sysdsn@hotmail.com Email: sysdsn@yahoo.com Web: http://www.sysdsn.com |
|
| 3樓: | >>參與討論 |
| 作者: onebyte 于 2006/6/2 7:55:00 發(fā)布:
謝啦 那是不是用了原子操作,就可以不用volatile??因為volatile的作用不就是讓碰到那個變量時,從內(nèi)存去讀,而不是寄存器中。用了原子操作,讀全局變量的過程不會被其它任務所打斷,也就不存在用不用寄存器響應結果了。這樣理解對嗎? |
|
| 4樓: | >>參與討論 |
| 作者: gdtyy 于 2006/6/2 8:56:00 發(fā)布:
不對 原子操作的目的是保證一系列處理過程不被分割; volatile用于指示編譯器變量"易變",不要進行優(yōu)化. 兩者含義不同,原子操作不保證程序不被優(yōu)化,volatile也不保證操作是不可分的. |
|
| 5樓: | >>參與討論 |
| 作者: onebyte 于 2006/6/2 15:09:00 發(fā)布:
多謝!已明白 |
|
| 6樓: | >>參與討論 |
| 作者: 松鼠的大樹 于 2006/6/6 10:04:00 發(fā)布:
從某個角度講,他們的作用是相反的。 原子操作是保證一段處理程序不被打斷。一般有:在多任務環(huán)境中通過禁止任務調度,保證原子操作不被其它任務打斷;通過禁止中斷保證原子操作不被中斷打斷。原子操作的目的是保證被操作的全局變量在操作的過程中不被本操作之外的因素修改,保證操作的完整性。 Volatile是對編譯器指出,該變量可能被本處理流程之外的因素修改,所以每一次使用本變量的時候都要重新從它的實際memoey地址中讀入最新的值。這些因素包括:多任務環(huán)境中的其它的任務;中斷服務程序;硬件(例如:端口電壓,計數(shù)器計數(shù)寄存器)。所以,volatile的變量的使用中要適應它可能隨時改變的特點。 一個要求不變,一個要適應隨時改變,這個角度看,他們是相反的。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |