Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在线串行队列的多个定义,因此感到困惑_Ios_Swift_Multithreading - Fatal编程技术网

Ios 在线串行队列的多个定义,因此感到困惑

Ios 在线串行队列的多个定义,因此感到困惑,ios,swift,multithreading,Ios,Swift,Multithreading,在线阅读之后,我遇到了两种关于串行队列的定义 第1个版本:串行队列一次执行一个任务 第二个版本:串行队列以串行方式执行任务,因此task1必须在task2启动之前完成 你能告诉我哪一个是正确的吗?正如拉图尔·沙克尔所说,两个版本所说的是同一件事 第1版:串行队列一次执行一项任务 您只能运行一个任务,因此您的任务必须在另一个任务开始之前完成 任务1开始 任务1结束 任务2开始 任务2结束 第二版:串行队列以串行方式执行任务,因此task1必须在task2启动之前完成 显然,结果与第1版相同 但是第

在线阅读之后,我遇到了两种关于串行队列的定义

第1个版本:串行队列一次执行一个任务

第二个版本:串行队列以串行方式执行任务,因此task1必须在task2启动之前完成


你能告诉我哪一个是正确的吗?

正如拉图尔·沙克尔所说,两个版本所说的是同一件事

第1版:串行队列一次执行一项任务

您只能运行一个任务,因此您的任务必须在另一个任务开始之前完成

  • 任务1开始
  • 任务1结束
  • 任务2开始
  • 任务2结束
  • 第二版:串行队列以串行方式执行任务,因此task1必须在task2启动之前完成

    显然,结果与第1版相同

    但是第二个版本可能会提到回调或其他类型的多线程范例,您可以运行多个任务,但任务2将等待任务1结束

    在任何情况下,如果一个任务在另一个任务结束后启动,那么两个任务都是串行的,就这么简单。

    队列中的操作根据其就绪性、优先级和互操作依赖性进行组织,并相应地执行。如果所有排队的操作具有相同的队列优先级,并且在放入队列时准备好执行,即,它们的isReady属性返回true,它们将按照提交到队列的顺序执行。否则,操作队列总是执行相对于其他就绪操作具有最高优先级的操作

    但是,您永远不应该依赖队列语义来确保操作的特定执行顺序,因为操作准备状态的更改可能会更改生成的执行顺序。互操作依赖项为操作提供了绝对的执行顺序,即使这些操作位于不同的操作队列中。在操作对象的所有依赖操作完成执行之前,操作对象不会被视为已准备好执行


    因此,排队操作的目的是串行执行,但它从来没有挂载。为确保执行顺序依赖关系必须指定,以获得完全证明的准确行为。

    两个版本以不同的方式说完全相同的事情。两个版本听起来不同,第一个版本说一次一个任务,这意味着如果我有多个任务,那么我可以进行上下文切换……请看一下这里,声明2是关于一些特殊情况的。i、 e将并发操作数设置为1。在上下文切换中,您一次最多可以执行1个操作。请记住,GCD队列和iOS多任务通常是非抢占式的。在串行队列上执行直到完成的任务。不能为同一队列上的另一个任务中断到executeno,一次一个任务意味着,例如,假设您正在处理ios项目。现在告诉我1)一次做一个项目是否与2)连续做项目相同???不一样,对吧?是的,是的。一次一个项目,我在一个项目中工作,结束,然后在另一个项目中工作。我连续完成一个项目,然后完成另一个项目。第1版假定任务已完成,而不仅仅是中途执行一项任务,然后切换到另一项任务,然后再返回,这不是(通常)编程的工作方式。FWIW,上述警告仅适用于操作队列,而不适用于调度队列。(OP之前的所有问题都是关于GCD的,这里可能也是如此。)