C語(yǔ)言中的volatile到底有什么用?
volatile與編譯器
int busy = 1;void wait() {while(busy) {;}}

wait:mov eax, DWORD PTR busy[rip]:test eax, eaxjne .L2retbusy:1
int busy = 1;// 該函數(shù)在A線(xiàn)程中執(zhí)行void wait() {while(busy) {;}}// 該函數(shù)在B線(xiàn)程中執(zhí)行void signal() {busy = 0;}

wait::mov eax, DWORD PTR busy[rip]test eax, eaxjne .L2retbusy:1

volatile與多線(xiàn)程
struct data {int a;int b;int c;...};volatile struct data foo;void thread1() {foo.a = 1;foo.b = 2;foo.c = 3;...}void thread2() {int a = foo.a;int b = foo.b;int c = foo.c;...}
volatile與memory order
volatile int busy = 0;
線(xiàn)程1 線(xiàn)程2X = 10 if (!busy)busy = 0; Y = X;

編程獅-前端交流群正在構(gòu)建中
正在學(xué)習(xí)前端或者準(zhǔn)備學(xué)習(xí)前端的小伙伴
都可以來(lái)加入我們
群里可以進(jìn)行學(xué)習(xí)討論、八卦閑談
后面還將會(huì)派送福利哦~
想要加入的小伙伴
可以聯(lián)系我們的學(xué)習(xí)顧問(wèn)-七七 ↑
評(píng)論
圖片
表情
