我想弄清楚的IO如何管理線程:即使文檔不建議同時使用p_thread POSIX和NSThread(斯威夫特只是線程),我認爲它有助於瞭解他們工作。 我嘗試使用Thread類進行測試,以瞭解Apple通過Thread類的「IsExecuting variable」所打算的內容。在其documentation Apple中聲明,如果接收器正在執行,則此變量返回「true」,否則返回false。 所以我試圖創建一個線程,打印它將進入睡眠,睡眠5秒鐘,醒來,並打印它醒來,並重復週期的時刻。線程和isExecuting可變
這是代碼:
func mythread() {
repeat{
print("myThread start to sleep ...")
Thread.sleep(forTimeInterval: 5)
print("...myThread wakes up")
}while(true)
}
而另一個線程,每一個第二打印MyThread的 此的 「isExecuting變量」 是代碼:
func threadmonitor(){
repeat{
Thread.sleep(forTimeInterval: 1)
print(" myThread isExecuting? : \(myThread!.isExecuting)")
}while (true)
}
印刷品有以下幾種:
myThread start to sleep ...
myThread isExecuting? : true
myThread isExecuting? : true
myThread isExecuting? : true
myThread isExecuting? : true
...myThread wakes up
myThread start to sleep ...
myThread isExecuting? : true
myThread isExecuting? : true
myThread isExecuting? : true
myThread isExecuting? : true
myThread isExecuting? : true
爲什麼即使當線程「MyThread」睡眠時,它的「isExecuting variable」打印爲真? 蘋果計劃通過執行來實現什麼?在這一點上,我不相信它打算線程在處理器中運行。
在這種情況下又有什麼打算?
他們不僅不建議這樣做'p_thread'用'NSThread' /'Thread',與GCD的到來,他們建議你考慮完全放棄自己的線程編程。參見[併發編程指南:從主題客場遷移(https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ThreadMigration/ThreadMigration.html#//apple_ref/doc/uid/TP40008091- CH105-SW1)。當然,如果你必須使用它,但GCD的生活比'NSThread'更容易。 – Rob
在回答你的問題時,我相信它告訴你線程已經啓動並且沒有終止。 – Rob