为什么这个线程不执行最后一行代码

Why this thread doesn't execute last line code

我创建了一个线程。而且我发现这个线程没有执行最后一行代码。

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

然后我调用这个线程 'thread.start()'。但它只能打印 'A'.

CFRunLoop() 是一个 运行 无限期运行的函数,直到它停止。 这意味着上面的代码基本上是:

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

只有停止 运行 循环才能调用最后一行。