必备知识架构-线程-⑤面试
[toc]
六、队列 -> 任务 -> 线程 -> 数据安全
有队列,就有需要处理的任务,有任务就有线程相关的要考虑(附队列本身也处在线程中),有多线程的考虑,就要考虑数据安全。
常见笔试/面试题
3、队列和数据安全
那我们先来知道一个非常重要的事情:
——- 队列只是负责任务的调度,而不负责任务的执行 ———
——- 任务是在线程中执行的 ———
所以,这个问题其实问得就不大对。让人不知怎么答。
我们这里说下,分情况。
如果是串行队列,数据是安全的。
如果是并发队列,在读写的时候,数据是不安全的。我们可以通过以下几种方式将其处理成安全的。
①、并发队列,改成串行执行。
可以通过
任务是同步任务;
异步任务用依赖;
异步任务用信号量控制并发量为1
②、加锁
@synchronized
NSLock
dispatch_semaphore