为什么在iOS

时间:2015-09-09 02:21:36

标签: ios multithreading sockets

在我开发与套接字连接相关的Android应用程序之前,我总是需要打开一个新的线程来处理它们,否则肯定会发生错误。

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

我做过一些研究,但我找不到任何解释此问题的来源。

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

1 个答案:

答案 0 :(得分:1)

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

您想要阅读Concurrency Programming Guide,特别是"远离线程"以了解iOS如何管理并发。它与Android完全不同,这种误解常常会造成很多破解的iOS代码。