iOS开发中’thread’和’queue’有什么区别?

参见英文答案 > Use of the terms “queues”,“multicore”,and “threads” in Grand Central Dispatch3个
我是iOS开发的新手.现在我对这两个概念感到困惑:“线程”和“队列”.我所知道的是,它们都是关于多线程编程的.任何人都能解释这两个概念以及它们之间的区别吗?
提前致谢!

解决方法

在您阅读我的答案之前,您可能需要考虑阅读本文 – Migrating away from Threads

我保持理论上的讨论,因为你的问题没有任何代码样本.这两种结构都是提高应用响应能力所必需的.可用性.

消息队列是一种数据结构,用于将消息从发送时起保存到接收方检索并对其进行操作的时间.通常,队列被用作“连接”生成者(数据)和“生成”的方式.消费者(数据).

线程池是执行某种处理的线程池.线程池通常会附加一些线程安全队列(引用消息队列),以允许您排队要完成的作业.这里队列通常被称为“任务队列”.

因此,在某种程度上,线程池可能存在于生产者端(生成数据)或消费者端(处理数据).而“传递”数据的方式是通过队列.为什么需要这个“中间人” –

>它解耦系统.生产者不了解消费者和消费者.反之亦然.
>如果生产者数据出现峰值,消费者不会被数据轰炸.队列长度会增加,但消费者是安全的.

例:

在iOS中,主线程(也称为UI线程)非常重要,因为它负责将事件分派给适当的小部件,这包括绘图事件,基本上是用户看到的UI和.交互.

如果触摸屏幕上的按钮,UI线程会将触摸事件分派给应用程序,然后应用程序会设置其按下状态并将请求发布到事件队列. UI线程将请求出列并通知窗口小部件重绘自身.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...