多线程 (锁)学习

2020-02-28  本文已影响0人  Tony17

前言

多线程在开发过程中使用非常频繁,但是由于 OC GCD的强大和客户端对于多线程的需求没有那么复杂。很多时候就是一个简单的调用就可以满足我们的需求,但是随着项目的增大,简单的开启异步线程已经不能瞒住我们的需要。今天我来简单学些一下多线程的知识。

多线程

thread_all.png

同步,异步,并发,串行

thread_sync_async.png

多线程隐患

多线程最常见的隐患是资源共享,当多个线程同时访问同一块资源的时候,容易引发数据错乱和数据安全问题。
解决办法是线程同步技术,实现同时只会有一个线程访问资源已解决资源共享的问题。
最常见的线程同步技术是 加锁

线程同步方案

以下说明按照性能从高到低排序:

属性的 atomic 修饰符用于保证属性的 setter、getter 的原子性操作,相当于在 getter、setter 内部价了线程同步的锁,但是它并不能保证使用属性的过程中是线程安全的

互斥锁,自旋锁比较

iOS中的读写安全方案

典型的应用场景是多读单写,经常用于文件等数据的读写操作,iOS中的实现方案有:

最后

以上就是本篇的内容,势必会有一些遗漏和错误,欢迎斧正~

上一篇下一篇

猜你喜欢

热点阅读