当前位置: 首页 > 编程笔记 >

Swift并发循环

王修为
2023-03-14
本文向大家介绍Swift并发循环,包括了Swift并发循环的使用技巧和注意事项,需要的朋友参考一下

例子

GCD提供了执行循环的机制,从而使循环相对于彼此同时发生。当执行一系列计算量大的计算时,这非常有用。

考虑以下循环:

for index in 0 ..< iterations {
    // 在这里做一些计算昂贵的事情
}

您可以使用concurrentPerform(在Swift 3中)或dispatch_apply(在Swift 2中)同时执行这些计算:

3.0
DispatchQueue.concurrentPerform(iterations: iterations) { index in
    // 在这里做一些计算昂贵的事情
}
3.0
dispatch_apply(iterations, queue) { index in
    // 在这里做一些计算昂贵的事情
}

该环路闭合将被调用每个index从0到,但不包括iterations。这些迭代将相对于彼此并发运行,因此不能保证它们的运行顺序。在任何给定时间同时发生的实际迭代次数通常取决于所讨论设备的功能(例如,设备具有多少个内核)。

有两个特殊注意事项:

  • 该concurrentPerform/dispatch_apply可相对于彼此同时运行的循环,而这一切对于您从中调用它的线程同步发生。因此,请勿从主线程调用此方法,因为这将阻塞该线程,直到完成循环为止。

  • 因为这些循环是相对于彼此同时发生的,所以您有责任确保结果的线程安全性。例如,如果使用这些计算量大的计算结果来更新某些词典,请确保自己同步这些更新。

  • 请注意,运行并发循环会产生一些开销。因此,如果在循环内执行的计算的计算量不足,您可能会发现,与html" target="_blank">同步所有这些并发线程相关的开销可能会降低(即使不能完全抵消)使用并发循环获得的任何性能。

    因此,您有责任确定在循环的每次迭代中要执行的正确工作量。如果计算太简单,则可以使用“跨步”来在每个循环中包含更多的工作。例如,您可以在循环中执行100次迭代,而不是对一百万个琐碎的计算执行并发循环,每个循环进行10,000次计算。这样,每个线程上执行的工作量就很多,因此与管理这些并发循环相关的开销变得不那么重要了。

 类似资料:
  • 8.5. 并发的循环 本节中,我们会探索一些用来在并行时循环迭代的常见并发模型。我们会探究从全尺寸图片生成一些缩略图的问题。gopl.io/ch8/thumbnail包提供了ImageFile函数来帮我们拉伸图片。我们不会说明这个函数的实现,只需要从gopl.io下载它。 gopl.io/ch8/thumbnail package thumbnail // ImageFile reads an

  • 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图: 循环类型 Swift 语言提供了以下几种循环类型。点击链接查看每个类型的详细描述: 循环类型 描述 for-in 遍历一个集合里面的所有元

  • Swift while循环从计算单一条件开始。如果条件为true,会重复运行一系列语句,直到条件变为false。 语法 Swift while 循环的语法格式如下: while condition { statement(s) } 语法中的 statement(s) 可以是一个语句或者一个语句块。 condition 可以是一个表达式。如果条件为true,会重复运行一系列语句,直到条件变

  • Swift 循环 该循环方式在 Swift 3 中已经弃用。 Swift for 循环用来重复执行一系列语句直到达成特定条件,一般通过在每次循环完成后增加计数器的值来实现。 语法 Swift for 循环的语法格式如下: for init; condition; increment{ 循环体 } 参数解析: init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量

  • 主要内容:循环控制语句有时可能存在需要多次执行代码块的情况。 通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推。 编程语言提供各种控制结构,允许更复杂的执行路径。 循环语句允许多次执行语句或语句组。 以下是大多数编程语言中循环语句的一般流程 - Swift 4编程语言提供以下类型的循环来处理循环要求。 单击以下链接查看其详细信息。 编号 循环类型 描述 1 for-in循环 此循环为范围,

  • Swift repeat...while 循环不像 for 和 while 循环在循环体开始执行前先判断条件语句,而是在循环执行结束时判断条件是否符合。 语法 Swift repeat...while 循环的语法格式如下: repeat { statement(s); }while( condition ); 请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会