浅谈多线程编程中的误区
虽然很多程序员可以对异步、GCD等等与线程相关的概念说的天花乱坠。但是实质上深挖本质的话,大多数人并不能很好的区分Race Condition,Atomic,Immutable对象在线程安全中真正起到的作用。
所以今天就以这篇文章来谈谈我所理解的线程安全。
首先就允许我从Immutable来开始整篇话题吧。
Immutable
最近几年,Immutable这个说法开始越来越流行。比如用过Swift的人都知道,Swift相较于Objective-C有一个比较明显的改动就是将结构体(Struct)和类型(Class)进行了分离。从某种方面来说,Swift将值类型和引用类型进行了明显的区分。为什么要这么做?
- 避免了引用类型在被作为参数传递后被他人持有后修改,从而引发比较难以排查的问题。
- 在某些程度上提供了一定的线程安全(因为多线程本身的问题很大程序