天天看点

多线程基础(四)线程的状态、安全性

线程的状态

多线程基础(四)线程的状态、安全性
多线程基础(四)线程的状态、安全性

多线程的安全隐患

多线程基础(四)线程的状态、安全性

好比,上厕所,一个资源就好比这个厕所只有一个,你只有等别人上完开了门出来之后,你才可以进去吧。

为了体现这个安全隐患,我们通过一个“买票”的实例来体会这个东西:

多线程基础(四)线程的状态、安全性
多线程基础(四)线程的状态、安全性

加锁前:

多线程基础(四)线程的状态、安全性

加锁后:

多线程基础(四)线程的状态、安全性

下面的不是唯一的

多线程基础(四)线程的状态、安全性
多线程基础(四)线程的状态、安全性

原子属性和非原子属性

atomic和nonatomic(这两个可能会在面试中问到):

多线程基础(四)线程的状态、安全性
多线程基础(四)线程的状态、安全性

ios开发的建议

所有属性都声明为nonatomic

尽量避免多线程抢夺同一块资源

尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减小移动客户端的压力