iOS开发中“线程”和“队列”之间有什么区别?

杰伊

我是iOS开发的新手。现在,我对这两个概念感到非常困惑:“线程”和“队列”。我所知道的是它们都与多线程编程有关。谁能为我解释这两个概念以及它们之间的区别?提前致谢!

斯里卡·阿巴拉拉茹

在阅读我的答案之前,您可能需要考虑阅读以下内容-远离线程

我将讨论保持理论性,因为您的问题没有任何代码示例。这两种构造都是提高应用程序响应度和可用性所必需的。

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

线程池是执行某种处理的线程池线程池通常将附加某种类型的线程安全队列(请参阅消息队列),以使您可以将要完成的作业排队。在这里,队列通常被称为“任务队列”。

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

  1. 它使系统解耦。生产者不了解消费者,反之亦然。
  2. 如果生产者数据激增,则不会用数据轰炸消费者。队列长度将增加,但是消费者是安全的。

例子:

在iOS中,主线程(也称为UI线程)非常重要,因为它负责将事件分发到适当的小部件,并且其中包括绘图事件,基本上是用户可以看到并进行交互的UI。

如果您触摸屏幕上的按钮,则UI线程会将touch事件调度到应用程序,该应用程序又将其设置为按下状态,并将请求发布到事件队列UI线程使请求出队,并通知窗口小部件重新绘制自身。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

线程和之间有什么区别

GCD主队列和主线程有什么区别?

IOS开发中的协议,扩展名和类别之间有什么区别?以及如何正确使用它们?

Java中的用户线程和守护程序线程之间有什么区别?

Java队列中的add和offer方法之间有什么区别?

GCD中的Dispatch_barrier_async和串行队列,它们之间有什么区别?

NPTL和POSIX线程之间有什么区别?

异步方法和线程之间有什么区别?

线程和多处理模块之间有什么区别?

超线程和多核之间有什么区别?

“ seda + parallelConsumers”和“ direct +线程”之间有什么区别

Unix中的线程和分支进程之间有什么区别?

对于C ++中的多线程,join()和detach()之间有什么区别?

iOS中的开发和生产SSL证书有什么区别?

Android开发中的Bundle和JSONObject有什么区别?

debug和AppStore iOS版本之间有什么区别

GCD中的线程和队列之间有什么关系?

NodeJS中的多线程和异步有什么区别

jmeter中的“线程”和“样本”有什么区别?

“”和“之间有什么区别?” 和“!” 在Swift中?

“事件循环队列”和“作业队列”有什么区别?

iOS中以下情况之间有什么区别?

任务和线程有什么区别?

时间多线程和超线程之间有什么区别?

CPU线程和通过编程创建的线程之间有什么区别?

CPU线程和程序线程之间有什么区别

Maven中的package和groupId之间有什么区别

在phpunit中,__construct和setup之间有什么区别?

Python中的模块和库之间有什么区别?