[英]How to thread sleep in swift on linux
我正在嘗試編寫一個循環運行並每30秒執行一些代碼的小程序。
我不太在乎時間的精確性,但是我確實在乎該程序可以在linux平台上編譯和運行,並且可以使用swift軟件包管理器來構建和測試該程序。
我的第一槍就像
while true {
print("doing the work")
sleep(30) // also tried usleep(30*1000*1000)
}
顯然,在Swift 4中沒有找到對sleep(_:)
引用,並且該代碼無法編譯。 我嘗試使用Timer
,但是一旦計時器開始Timer
,程序便會退出,因為計時器在后台運行,而主線程的唯一工作就是安排它。
這必須比看起來容易。 我在Swift中的線程管理方面缺少什么,這可以解釋我如何發現這一點?
---編輯以闡明為什么這與許多建議的重復項有所不同:
我明確地試圖使主線程進入睡眠狀態,並且如上所述,我無法使用其他地方接受的答案所建議的sleep
功能讓Linux上的Swift進行編譯。 我的程序在CLI上下文中的上下文意味着在后台線程中延遲的操作(如許多其他可用來源所建議的那樣)在這里不起作用。 此外,此CLI在Linux上運行,因此我不能依賴僅iOS的庫。
您可以從Glibc
或Darwin
導入sleep
,但更好的是,您可以從Foundation
使用Thread.sleep(forTimeInterval:)
import Foundation
while true {
print("hello")
Thread.sleep(forTimeInterval: 0.1)
}
試試這個
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(30), execute: {
// Put your code which should be executed with a delay here
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.