package com.chzhao;public class Volatiletest extends Thread { private static int count = 0; public void run() { count++; } public s...
分类:
编程语言 时间:
2014-12-09 15:31:08
阅读次数:
232
简单的记录下,以后可以多去看一些操作系统的分时工作原理,了解其中的思想:MCU中断是个很好用,效率高的东西,少用delay()可以大幅度提高运行效率。比如:volatile unsigned int a;void InterruptHandle() //1ms中断{ a++; ...
分类:
其他好文 时间:
2014-12-04 00:43:24
阅读次数:
289
volatile所有定义的变量都是在内存上面的,例如:int i = 10;int j = i;int k = i;i = 10; 是初始化的变量,存放在数据段,未初始化的变量存放在bss段也就是i为左值时存放在内存上j = i 此时 i 为右值,那么i的值在寄存器上,j就从寄存器上面取值由于编译器...
分类:
其他好文 时间:
2014-12-03 18:25:38
阅读次数:
194
常见的并发陷阱volatilevolatile只能强调数据的可见性,并不能保证原子操作和线程安全,因此volatile不是万能的。参考指令重排序volatile最常见于下面两种场景。a. 循环检测机制volatilebooleandone=false;while(!done){dosomething...
分类:
编程语言 时间:
2014-12-03 00:19:55
阅读次数:
319
C++ 关键字static,register,const,volatile,extern
static 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时可改变其值。
静态变量或静态函数,只有本文件内的代码才可访问它,它的名字(变量名或函数名) 在其他文件中不可见。在函数体内生成的静态变量,它的值能够一直维持。
在C++类的成员变量被声明为st...
分类:
编程语言 时间:
2014-12-02 11:51:53
阅读次数:
220
在JAVA中,每个线程都有一块属于自己的工作内存区,该内存区会保存一份从主内存拷贝过来的公共变量值。不加volatile修身的变量在每个线程中的值修改一般都是独立的。及如下图所示。...
分类:
编程语言 时间:
2014-12-01 16:03:55
阅读次数:
281
提到java原子类,不得不说下关键字volatile和内存可见性。内存可见性问题,可以看下《java并发编程实践》讲的很详细。下面的示例代码是错误的,因为没有使用volatile来保证内存的可见性,所以如果1个线程修改了共享变量,那么另外一个线程可能永远也看不到修改后的值。如果将stop修改成volatile类型的,就可以保证一个线程对volatile变量的修改,对另一个线程是可见的。
publ...
分类:
其他好文 时间:
2014-11-30 18:48:15
阅读次数:
285
参考资料:1 .浅谈Memory Reordering2.透过LINUX内核看无锁编程3.Why the "volatile" type class should not be useddfsdf4.锁的意义spinlock(自旋锁)lock-free(无锁编程)mutex(互斥锁)read_wri...
分类:
其他好文 时间:
2014-11-28 09:51:45
阅读次数:
185
C++ static 函数的问题近日读C++primer中static一章,有这么一句话,“静态成员函数的声明除了在类体中的函数声明前加上关键字static以及不能声明为const或volatile之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字static”为什么不能在类体外指定关键字...
分类:
编程语言 时间:
2014-11-25 17:50:05
阅读次数:
236
1.即使本程序中虽然不改变这种类型的值,但别的比如中断程序可能会改变这个值,加上volatile,编译器不优化,每次都重新访问这个值做判断2.如unsignedcharflag=1;intmain(intargc,char**argv){reg_intr(XXX,intr_func);while.....
分类:
其他好文 时间:
2014-11-25 15:48:52
阅读次数:
199