gpt4 book ai didi

multithreading - 我是否正确理解了这些概念?

转载 作者:行者123 更新时间:2023-12-03 12:55:48 24 4
gpt4 key购买 nike

在我的大部分采访中,我都被问到有关 Web 服务和多线程的问题。我都没有做过,所以我决定进一步了解 网络服务 使用 Grand Central Dispatch 的多线程 .

  • 对于 Web 服务,我理解的方式是您需要使用诸如 NSURLConnection 之类的类来获取数据。 .基本上设置一个新的NSURL ,然后是连接,然后是请求。您还需要使用 API 的方法,例如 didConnect , didReceiveData , 和 didFailLoadWithError .收到数据后,一般是 JSON 或 XML 格式,并存储为 NSData 对象,您可以将其存储并通过它进行解析。有多种方法可以解析它,例如使用 SBJSON 或 NSXMLParser。然后你可以用它做你需要的。
  • 对于多线程,Grand Central Dispatch 是一种 c 风格的多线程方式。基本上,当您需要远离主线程进行繁重的拖拽以避免应用程序卡住时,您可以使用它。您可以同步或异步调度。异步意味着主线程上的方法将继续执行,同步意味着它不会。您永远不需要将 GCD 与 NSURLConnection 一起使用, 因为 NSURLConnection已经在后台完成了它的工作,然后调用主线程中的委托(delegate)。但是,要保存和解压缩文件,您应该使用 GCD。当您调用 dispatch_async ,你传入一个调度队列。您可以使用串行队列或并发队列。串行队列将按照它们到达的顺序一次执行队列中的任务。这是默认设置。使用并发队列,并发执行的任务可能会同时执行。

  • 我的第一个问题是,我对这两个概念有正确的理解吗?我知道关于 GCD 有很多东西要学,但我只是想确保我的基本思想是正确的。此外,使用 GCD,为什么有人想要同步调度,这不会破坏多线程的目的吗?

    最佳答案

    同步调度的唯一原因是防止当前代码继续执行直到临界区完成。

    例如,如果您想从共享资源中获取一些值(value)并立即使用它,则需要同步调度。如果当前代码不需要等待临界区完成,或者如果可以简单地向同一个串行队列提交额外的后续任务,则通常首选异步提交。

    关于multithreading - 我是否正确理解了这些概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716217/

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