1)编译器的优化:
在本次线程内,当读取一个变量时i,为了提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。
2)voLatile:直接存取原始内存地址
volatile
最新推荐文章于 2022-04-24 11:55:29 发布
1)编译器的优化:
在本次线程内,当读取一个变量时i,为了提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。
2)voLatile:直接存取原始内存地址