原則として、シリアルDispatchQueue
は、送信されたタスクを次々と実行します。しかし、コンテキストスイッチが1つのタスク(たとえば、sleep
と呼んでいる)で起動された場合はどうなりますか?キューはすぐに次のタスクを実行するか、現在のタスクが終了するのを待ちますか?このコードの場合シリアルDispatchQueueでコンテキストスイッチが起動された場合はどうなりますか?
:
q.async {
print("IN 1")
var i = 1
while i < 10 {
Thread.sleep(forTimeInterval: 0.1)
i += 1
}
print("OUT of 1")
}
q.async {
print("IN 2")
}
の結果である:
// IN 1 -> OUT of 1 -> IN 2 ?
// or IN 1 -> IN 2 -> OUT of 1 ?
私が遊び場でコードを実行しようとしたが、それはsleep
(およびThread.sleep
)らしい遊び場内で動作しません。
実際。 PlaygroundSupportのヒントをありがとう! – NeoWang