我正在尝试编写一个循环运行并每 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 的库。
最佳答案
您可以从 Glibc
或 Darwin
导入 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/