我是iOS开发的新手。现在我对这两个概念感到很困惑:" thread"和"队列"。我所知道的是,它们都是关于多线程编程的。任何人都能解释这两个概念以及它们之间的区别吗? 提前谢谢!
答案 0 :(得分:21)
NSOperationQueue和NSThread如何运作:
NSThread:
NSOperationQueue:
如何使用NSThread和NSOperationQueue:
NSThread:
NSOperationQueue:
现在您应该了解NSTread和NSOperation的优缺点。您可以根据应用程序的需要使用其中任何一个。
答案 1 :(得分:14)
在您阅读我的回答之前,您可能需要考虑阅读本文 - Migrating away from Threads
我保持讨论的理论性,因为您的问题没有任何代码示例。这两种结构都是提高应用响应能力所必需的。可用性。
消息队列是一种数据结构,用于在消息发送时将消息保留到接收方检索并对其进行操作的时间。通常,队列用作“连接”生产者(数据)和“生成”的方式。消费者(数据)。
线程池是执行某种处理的线程池。线程池通常会附加某种线程安全队列(引用消息队列),以允许您排队要完成的作业。这里的队列通常被称为“任务队列”。
因此,线程池可能存在于生产者端(生成数据)或消费者端(处理数据)。而“传递”数据的方式是通过队列。为什么需要这个“中间人” -
示例:强>
在iOS中,主线程(也称为UI线程)非常重要,因为它负责将事件分派给适当的小部件,这包括绘图事件,基本上是用户看到的UI和。交互。
如果触摸屏幕上的按钮,UI线程会将触摸事件发送到应用程序,然后应用程序会设置其按下状态并将事件发送到事件队列。 UI线程将请求出列并通知窗口小部件重绘自己。