参见英文答案 >
Use of the terms “queues”,“multicore”,and “threads” in Grand Central Dispatch3个
我是iOS开发的新手.现在我对这两个概念感到困惑:“线程”和“队列”.我所知道的是,它们都是关于多线程编程的.任何人都能解释这两个概念以及它们之间的区别吗?
提前致谢!
我是iOS开发的新手.现在我对这两个概念感到困惑:“线程”和“队列”.我所知道的是,它们都是关于多线程编程的.任何人都能解释这两个概念以及它们之间的区别吗?
提前致谢!
解决方法
在您阅读我的答案之前,您可能需要考虑阅读本文 –
Migrating away from Threads
我保持理论上的讨论,因为你的问题没有任何代码样本.这两种结构都是提高应用响应能力所必需的.可用性.
消息队列是一种数据结构,用于将消息从发送时起保存到接收方检索并对其进行操作的时间.通常,队列被用作“连接”生成者(数据)和“生成”的方式.消费者(数据).
线程池是执行某种处理的线程池.线程池通常会附加一些线程安全队列(引用消息队列),以允许您排队要完成的作业.这里队列通常被称为“任务队列”.
因此,在某种程度上,线程池可能存在于生产者端(生成数据)或消费者端(处理数据).而“传递”数据的方式是通过队列.为什么需要这个“中间人” –
>它解耦系统.生产者不了解消费者和消费者.反之亦然.
>如果生产者数据出现峰值,消费者不会被数据轰炸.队列长度会增加,但消费者是安全的.
例:
在iOS中,主线程(也称为UI线程)非常重要,因为它负责将事件分派给适当的小部件,这包括绘图事件,基本上是用户看到的UI和.交互.
如果触摸屏幕上的按钮,UI线程会将触摸事件分派给应用程序,然后应用程序会设置其按下状态并将请求发布到事件队列. UI线程将请求出列并通知窗口小部件重绘自身.