gpt4 book ai didi

ios - iOS中的异步操作是否会在内部创建一个新线程并为其分配任务?

转载 作者:行者123 更新时间:2023-11-28 23:24:38 28 4
gpt4 key购买 nike

iOS 中的异步操作是否会在内部创建一个新线程,并为其分配任务?

最佳答案

异步操作能够在内部创建一个新线程并为其分配任务。但是为了实现这一点,您需要运行一个异步操作来创建一个新线程并为其分配任务。或者换句话说:没有直接的相关性。

我假设异步是指类似 DispatchQueue.main.async { <#code here#> } 的意思.这不会创建新线程,因为主线程应该已经存在。这项工作如何以及为什么可以(如果过于简单)用一系列操作和无限循环来解释,这基本上就是RunLoop。在那里。想象一下:

Array<Operations> allOperations;

int main() {
bool continueRunning = true;
for(;continueRunning;) {
allOperations.forEach { $0.run(); }
allOperations.clear();
}
return 0;
}

当你调用类似 DispatchQueue.main.async 的东西时它基本上创建了一个新操作并将其插入到 allOperations 中.同一线程最终将进入一个新循环(在 for 循环内)并异步调用您的操作。再次记住,这一切都过于简单化了,只是为了说明所有这些背后的想法。您还可以从中想象定时器是如何工作的;该操作将评估当前时间是否大于下一次计划执行时间,如果是,它将触发定时器操作。这也是为什么定时器不能非常精确的原因,因为它们依赖于执行的其余部分并且线程可能很忙。

另一方面,当您创建新队列时可能会产生一个新线程 DispatchQueue(label: "Will most likely run on a new thread") .什么时候(如果)确切地制作一个线程不是需要修复的东西。它可能因运行的实现和系统而异。该工具将仅保证执行其设计目的,但不保证执行方式。

然后还有Thread可以生成新线程的类。但这笔交易与之前的交易相同;它可能会在内部立即创建一个新线程,也可能稍后再懒惰地创建。它所保证的只是它将适用于它的公共(public)接口(interface)。

我并不是说这些东西会随着时间、实现或它们运行的​​系统而改变。我只是说他们可能有,而且他们可能有。

关于ios - iOS中的异步操作是否会在内部创建一个新线程并为其分配任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59026984/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com