在⼀个进程内的所有线程共享全局变量,能够在不使⽤其他⽅式的前提
下完成多线程之间的数据共享(这点要⽐多进程要好)
缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量 的混乱(即线程⾮安全)
同步:
假设两个线程t1和t2都要对num=0进⾏增1运算,t1和t2都各对num修改10 次,num的最终的结果应该为20。
但是由于是多线程访问,有可能出现下⾯情况:
在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换 为”running”状态,t2也获得num=0。然后t2对得到的值进⾏加1并赋给num, 使得num=1。然后系统⼜把t2调度为”sleeping”,把t1转为”running”。线程t1 ⼜把它之前得到的0加1后赋值给num。这样,明明t1和t2都完成了1次加1⼯ 作,但结果仍然是num=1
问题产⽣的原因就是没有控制多个线程对同⼀资源的访问,对数据造成破 坏,使得线程运⾏的结果不可预期。这种现象称为“线程不安全”。