必备知识架构-线程-⑤面试

[toc]

六、队列 -> 任务 -> 线程 -> 数据安全

有队列,就有需要处理的任务,有任务就有线程相关的要考虑(附队列本身也处在线程中),有多线程的考虑,就要考虑数据安全。

常见笔试/面试题

3、队列和数据安全

那我们先来知道一个非常重要的事情:

——- 队列只是负责任务的调度,而不负责任务的执行 ———

——- 任务是在线程中执行的 ———

所以,这个问题其实问得就不大对。让人不知怎么答。

我们这里说下,分情况。

如果是串行队列,数据是安全的。

如果是并发队列,在读写的时候,数据是不安全的。我们可以通过以下几种方式将其处理成安全的。

①、并发队列,改成串行执行。

可以通过

任务是同步任务;

异步任务用依赖;

异步任务用信号量控制并发量为1

②、加锁

@synchronized

NSLock

dispatch_semaphore