/*************************************************************************
> File Name: volatile.c
> Author: XXDK
> Email: v.manstein@qq.com
> Created Time: Thu 16 Mar 2017 12:24:46 AM PDT
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<unistd.h>
void *serv_func(void *arg)
{
sleep(2);
*(int*)arg = 0;
}
int main()
{
#ifdef VLT
volatile int val = 1;
#else
int val = 1;
#endif
pthread_t tid;
pthread_create(&tid, NULL, serv_func, (void*)&val);
while(val) {
;
}
printf("byebye\n");
return 0;
}
以上栗子如编译时:
gcc volatile.c -o volatile -lpthread -O2
则代码被优化,形成while(1){;}为了避免这种情况
在该变量前面加volatile关键字。