Почему этот поток не выполняет код последней строки - PullRequest
0 голосов
/ 04 декабря 2018

Я создаю тему.И я считаю, что этот поток не выполняет код последней строки.

let thread = Thread {
    RunLoop.current.add(NSMachPort(), forMode: RunLoopMode.commonModes)
    let runloop = CFRunLoopGetCurrent()
    print("A")
    CFRunLoopRun()
    print("B")
}

Затем я вызываю этот поток 'thread.start ()'.Но он может печатать только «А».

1 Ответ

0 голосов
/ 04 декабря 2018

CFRunLoop() - это функция, которая работает бесконечно, пока не будет остановлена.Это означает, что приведенный выше код в основном:

print("A")
while true {
  // execute run loop 
}
print("B")

Последняя строка не может быть вызвана, пока вы не остановите цикл выполнения.

...