IOがスレッドをどのように管理しているか把握しようとしています。マニュアルでp_thread POSIXとNSThreadの両方を使用することをお勧めしない場合でも、作業。 私は、Threadクラスの "IsExecuting variable"によってAppleが意図するものを理解するために、Threadクラスでテストを試みました。 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"がtrueを出力しますか? AppleはExecutingで何を予定していますか?この時点では、スレッドがプロセッサで実行されているとは考えていません。
この場合はどうしますか?
「NSThread」/「Thread」で 'p_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