“如果没有同步,那么无论是编译器、硬件还是运行时,都可以随意安排操作的执行时间和顺序,例如,对寄存器或者处理器中的变量进行缓存,而这些被缓存的变量对于其他线程来说是,暂时甚至永久不可见的。”
“当线程共享数据时,必须使用同步机制,而这些机制往往会抑制某些编译器优化,使内存缓冲区中的数据无效,以及增加共享内存总线的同步流量。”
PS: 上面的两段话给出了线程安全问题,产生的一个原因:缓存问题。由于某个线程的缓存变量对其他线程不可见,所以本线程的修改,其他线程看不见,也操作不了,无法进行同步。所以带来了安全问题。
网友评论