水下功夫做透,水上才能顺风顺水。

举个线程不安全的例子?


当有1000个线程同时执行i++操作时,i变量的副本拷贝到每个线程的线程栈,当同时有两个线程以上的线程读取线程变量,比如此时是5,那么同时执行i++操作,再写入到全局变量,最后,两个线程跑完了,这个i还是6,而并不会是7,所以,出现不安全性。

一个线程对共享数据的写操作是分两步的,1.读到线程栈。2.写入变量。另一个写线程,再这两步之间插一脚。

posted @ 2020-05-31 12:53  北方寒士  阅读(1239)  评论(0编辑  收藏  举报