2015-12-08 56 views
3

我正在写一个Swift客户端与嵌入式系统上的服务器(用C编写)进行通信。它不是iOS/OSX相关的,因为我使用的是最近发布的Ubuntu版本。Swift是否有任何本地并发和多线程支持?

Swift是否对并发有本地支持?我知道苹果不鼓励开发者使用线程,并鼓励把任务交给通过GCD调度队列。问题在于GCD似乎只在达尔文(而NSThread是Cocoa的一部分)。

例如,C++ 11和Java具有线程和并发性作为其标准库的一部分。我明白像unix这样的平台特定的东西可以在某种C封装下使用,但对于我来说,这真的毁了首先使用Swift的地方(干净,易于理解的代码等)。

+0

尝试查看Ubuntu的libdispatch。 GCD是非常好的概念,易于使用。 https://launchpad.net/ubuntu/+source/libdispatch – user3441734

+0

GDC官方端口(https://github.com/apple/swift-corelibs-libdispatch)在Ubuntu上还没有正常运行。这是Ubuntu的一些端口吗? – Warrshrike

回答

5

Swift's GitHub报价,有一个为 “变阵” 自述:

并发:雨燕3.0完全依赖于平台的并发原语(libdispatch,基金会,并行线程等)并发。对并发的语言支持是一个经常被请求和潜在的高价值功能,但太大而无法在Swift 3.0的范围内使用。

我想这意味着在可预见的将来,线程的语言级别“原语”正在流行。

+0

有道理。我认为苹果正在积极构建Linux版GDC作为其开源项目的一部分,这是一种安慰。 – Warrshrike

+0

当然。尽管如此,看到Scala(以及Java和Python)对“未来”类构造(以及构成......和所有类似构造)的处理,并且看到语言设计者对借用功能形成这种语言的喜好,人们可以看到它的价值在扩展Swift方面,超越了“仅仅”移植GCD。 – GPI

+0

绝对是。将诸如Ruby和Scala之类的语言的函数式编程结构包含在类型安全的基于C的语言中,这构成了Swift对我(和其他人)的吸引力的很大一部分。 – Warrshrike