Swift是否有任何本地并发和多线程支持



我正在编写一个Swift客户端,以便与嵌入式系统上的服务器(用C编写)进行通信。它与iOS/OSX无关,因为我使用的是最近发布的Ubuntu版本。

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

例如,C++11和Java将线程和并发作为其标准库的一部分。我知道特定于平台的东西,比如unix上的posix,可以在某种C包装器下使用,但对我来说,这确实破坏了最初使用Swift的意义(干净、易于理解的代码等)

2021来了

从Swift 5.5开始,提供了更多的选项,如async/await编程模型和actor。

仍然没有直接操作线程,这是(到今天为止)一种设计选择。

如果您以前编写过并发代码,那么您可能已经习惯于使用线程。Swift中的并发模型是建立在线程之上的,但您不直接与它们交互。Swift中的异步函数可以放弃它正在运行的线程,这允许另一个异步函数在第一个函数被阻塞时在该线程上运行。

2015年的原始答案

引用Swift的GitHub;演进":

并发:Swift 3.0完全依赖于平台并发原语(libdispatch、Foundation、pthreads等)来实现并发。对并发性的语言支持是一个经常被要求的、潜在的高价值特性,但它太大了,不在Swift 3.0的范围内。

我想这意味着没有语言水平;基元";在可预见的未来,用于线程的正在酝酿中。

最新更新