在串行队列上运行异步任务时,我们可能会面临竞争状态

在串行队列上运行异步任务时,我们可能会面临竞争状态

问题描述:

假设如果串行队列中运行的多个异步任务正在访问同一个共享资源,是否有可能面临竞争条件?在串行队列上运行异步任务时,我们可能会面临竞争状态

按照我已添加的评论,这取自Apple doc。大胆的我把重点放在你要找的东西上。

串行队列(也称为专用调度队列)在它们被添加到队列中的顺序以时间执行一个任务 。当前正在执行的任务的 在由调度队列管理的不同线程上运行(可以改变从任务到任务的 )。 串行 队列通常用于同步访问特定资源

如果您使用的是并发队列,您可能会遇到竞争情况。例如,您可以使用调度屏障来阻止它。有关更多详细信息,请参阅Grand Central Dispatch In-Depth: Part 1/2

对于NSOperationNSOperationQueue同样适用。 NSOperationQueue可与maxConcurrentOperationCount设置为1串联。另外,通过操作使用依赖关系,可以将访问同步到共享资源。

+0

谢谢您花时间回答。我会通过链接。正如你大胆地指出的那样,每个人都说,但是如果在串行队列上运行两个异步任务来改变公共资源,那么我们可能会面临竞争条件? – Kishoretheju

+0

@Kishoretheju没有,因为资源可以连续触摸。第一个任务访问资源,当这个完成时,另一个任务可以触摸它。通过构建,这是由像串行队列这样的串行结构实施的。 –

+0

谢谢。将阅读更多关于串行队列。 – Kishoretheju