gpt4 book ai didi

ios - 为什么在iOS中打开socket连接时不需要打开新线程

转载 作者:行者123 更新时间:2023-11-29 01:40:15 25 4
gpt4 key购买 nike

之前我在开发Android应用的时候,涉及到socket连接的时候,总是需要开一个新的Thread来处理,不然肯定会报错。

另一方面,当我在 iOS 应用程序中做同样的事情时,我不需要打开一个新线程来处理这些套接字连接,而且我的 UI 仍然运行流畅。我不明白为什么会这样。

我做了一些研究,但没有找到任何资料可以解释这件事。

请帮助我理解这一点。提前致谢!

最佳答案

正如 @Fonix 所指出的,如果您使用 GCDAsyncSocket,它会为您处理并发性。但是如果您阅读 GCDAsyncSocket 代码,您会发现它也从不生成任何线程。 iOS 中几乎没有任何东西会生成自己的线程。对 NSThread 的引用几乎总是一个错误。 iOS并发基于队列并由GCD(Grand Central Dispatch)管理。队列最终会映射到线程,但这是一个内部细节,它不是 1:1 映射。

您需要阅读 Concurrency Programming Guide ,特别是“从线程迁移”,以了解 iOS 如何管理并发。它与 Android 完全不同,这种误解常常会造成大量损坏的 iOS 代码。

关于ios - 为什么在iOS中打开socket连接时不需要打开新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469970/

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