swift - 如何在 Linux 上快速线程 sleep

标签 swift linux swift-package-manager

我正在尝试编写一个循环运行并每 30 秒执行一些代码的小程序。

我不太关心时间是否准确,但我关心的是程序可以在 linux 平台上编译和运行,并且可以使用 swift 包管理器构建和测试。

我的第一枪就像

while true {
    print("doing the work")
    sleep(30) // also tried usleep(30*1000*1000)
}

显然,我找不到在 swift 4 中对 sleep(_:) 的引用,并且该代码无法编译。我曾尝试使用 Timer,但程序会在计时器开始计时后立即退出,因为计时器在后台运行,而主线程的唯一工作就是安排它。

这一定比看起来容易。关于 Swift 中的线程管理,我缺少什么可以解释我发现它有多难?

--- 编辑 澄清为什么这与许多建议的重复项不同:

我正在明确地尝试让主线程休眠,正如我上面提到的,我一直无法让 Swift 在 Linux 上使用 sleep 建议的函数进行编译其他地方接受的答案。我的程序在 CLI 上下文中的上下文意味着后台线程中的延迟操作,正如许多其他可用来源所建议的那样,在这里不起作用。此外,此 CLI 在 Linux 上运行,因此我不能依赖仅限 iOS 的库。

最佳答案

您可以从 GlibcDarwin 导入 sleep,但更好的是,您可以使用 Thread.sleep(forTimeInterval:)来自基金会

import Foundation

while true {
    print("hello")
    Thread.sleep(forTimeInterval: 0.1)
}

关于swift - 如何在 Linux 上快速线程 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51053819/

相关文章:

swift 包管理器。错误 : Found multiple packages with the name. ..?

Swift Package Manager 可执行应用程序,设置部署目标

ios - 使用自定义 URL 方案在 Swift 中打开 Instagram 应用程序

ios - 有没有办法手动更改 PDF 的 url 路径并使其实时更新?

linux - 在固定时间或非常快地添加到非常大的文件

java - Unix 换行符

ios - Swift 包管理器 - 自定义框架

ios - 保存一个解析对象会导致另一个对象也被保存

linux - 如何在fedora上安装p4?

swift3 - Swift 包管理器,添加本地依赖