# 理解 iOS 主线程主队列iOS 开发中,掌握主线程主队列是非常重要的。这些概念相辅相成,直接关系到你的应用程序是否流畅和稳定。本文旨在帮助你理解这两个概念,以及如何在开发过程中使用它们。 ## 主线程主队列概述 - **主线程**:是应用的 UI 线程,所有的用户界面更新都必须在此线程中执行。如果在该线程中执行耗时操作,应用将变得无响应。 - **主队列**:是一个串行队
原创 28天前
35阅读
 在iOS开发中,遇到耗时操作,我们经常用到多线程技术。Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列(dispatch queue)。GCD会负责创建线程和调度你的任务,系统直接提供线程管理。一、队列:基本概念:1.GCD的一个重要概念是队列,它的核心理念:将长期运行的任务拆分成多个工作
iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列主线程队列、同步任务、异步任务等(有示例代码)进程正在运行中的程序被称作进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间。线程进程中的一个对立的执行路径被称为线程,一个进程中至少包含一条线程,该线程被称为主线程。多线程多创建一条或者多条线程的,目的就是为了开启一条新的执行路径,运行指定的代码,主线程中的代
转载 2023-08-04 07:32:59
153阅读
ios中的多线程,除了可以用NSThread,还可以使用gcd。gcd的功能还是十分强大的,下面来详细了解一下。gcd是系统一个提供的一个线程队列,当我们需要使用多线程时,只要向已知的队列中添加任务。队列就会按照一定机制去执行这些任务。队列分3类分别是:        连续队列: 顺序执行任务    &nbs
第一次学习核心知识点1、主队列,专门用来在主线程上调度任务的队列,不会开启线程,以先进先出的方式,在主线程空闲时才会调用队列中的任务在主线程执行,如果当前主线程正在有任务执行, 2、 3、 意思是这个方法会阻塞主线程,然后在其它线程中执行主队列中的任务。 4、runloop和queue各自维护着自己的一个任务队列,在runloop的每个周期里面,会检测自身的任务队列里面是否存在待执行的task并且
线程概述一个运行着的程序就是一个进程或者叫做一个任务,一个进程至少包含一个线程线程就是程序的执行流。Mac和iOS中的程序启动,创建好一个进程的同时, 一个线程便开始运行,这 个线程主线程主线程在程序中的地位和其他线程不同,它是其他线程最终的父线程,且所有界面的显示操作即AppKit或 UIKit的操作必须在主线程进行。系统中的每一个进程都有自己独立的虚拟内存空间,而同一个进程中的多个线程
转载 2023-09-01 19:51:00
95阅读
iOS线程技术—GCD的用法一、主队列介绍主队列:是和主线程相关联的队列主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。获取主队列的方式:1 // 2 // YYViewController.m 3 // 12-GCD的基本使用(主队列) 4 // 5 //
iOS 底层探索篇 —— GCD函数和队列1. 队列线程1.1 主队列1.2 Global queue (全局队列)1.3 队列继承链2 GCD的任务执行堆栈2.1 同步队列执行堆栈2.1 异步队列执行堆栈3. 面试题 1. 队列线程一个线程中可以有多个队列,每个队列中可以执行多个任务,队列可以对任务进行排序,队列依靠线程来执行任务。1.1 主队列主队列(Main queue)是主线程关联
在开发 iOS 的时候,我们都知道 UI 相关的操作必须放在主线程,但是只要放在主线程就安全了么? 答案是否定的。在苹果的 MapKit 框架中,一个名为 addOverlay 的方法不仅要放在主线程中,而且必须放在主队列中。苹果公司的 Developer Technology Support 承认这是一个 bug。
转载 2023-07-14 14:40:24
229阅读
1点赞
最近搞一款塔防游戏,提到塔防,自然就想到了A星寻路。的确,它是一种高效的寻路算法。但当很多怪物同时在调用A星算法来寻找一条最近的路径来到达目的地时,我发现会很卡。我都不能接受这个卡屏,更何况是玩家呢。 所有我一直都在努力去优化A星算法。虽然有所改善,但卡的问题还是存在。 实在没辙了,我想到了队列线程。之前都没接触过这个东东,还好在网上找到很详细的线程介绍。当然,我只是用到了其中的一点点。分享给大
一、主队列介绍 主队列:是和主线程相关联的队列主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。 获取主队列的方式: dispatch_queue_t queue = dispatch_get_main_queue();(1)使用异步函数执行主队列中得任务,代码示例:
1、主队列,就是我们平时用到的UI主线程队列,可以调用dispatch_get_main_queue()来获得,是一个串行队列; 2、全局队列,进程中存在三个全局队列,按优先级分为:高、中(默认)、低。可以通过dispatch_get_global_queue函数传入优先级来访问队列
转载 2023-07-31 20:34:58
55阅读
1.同步任务在串行队列基本没用,在并行队列和串行队列中都会在主线程中执行2.串行队列中的异步任务只再开一个子线程。并且按照队列顺序执行3.并行队列中的异步任务根据任务的个数开线程,而且是无序的。并行队列就是并发执行同步和异步任务。并发队列不能控制执行顺序和新建线程的数量4.并行队列里嵌套同步任务是可以执行的,都执行在主先线程上,串行队列里嵌套同步任务直接死锁5.队列是先进先出的(FIFO)。同步任
讲解GCD的资料看了好多,但都没有解决心中的疑惑:  1.主队列只有一个线程,那么同步和异步执行有什么区别?同步主线程会造成线程死锁,异步不会,为什么呢?  2.同步执行串行队列和同步执行并发队列,有什么区别?同步执行,是在当前线程中执行队列中的任务,就意味着任务都在一条线程中执行,不可能多任务同时执行啊。  3.在主线程中同步执行串行队列,为什么就不造成线程死锁呢?有疑不解,如鲠在喉。有疑惑就代
  iOS线程里,这七个对象,1进程,2线程,3同步函数,4异步函数,5并行队列,6串行队列,7主线程主队列  可以说是几个非常核心的概念,动代码之前,理解这几个概念的区别和联系是非常重要的@2017-1月 1用面向对象的观点去理解,进程和线程,同步和异步,并行和串行,还有主线程主队列,七者关系  进程:程序不运行时就是一堆代码,运行时就是一堆的进程的组
本文着重点是任务和队列线程是什么?多线程有什么用?怎么正确使用任务和队列?案例使用GCD讲解。进程和线程进程:它是操作系统分配资源的基本单元,是在系统中正在运行的一个程序,可以理解为手机上的一个app;进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行的全部资源。线程:程序执行流的最小单元,线程是进程中的一个实体;一个进程要想执行任务,必须至少有一条线程,应用程序启动的时
GCD是iOS4推出的,目的是采取用来取代NSThread(iOS2.0推出)的,是C语言框架,能够自动利用更多CPU的核数,并且会自动管理线程的生命周期.// 1.GCD的两个核心概念是:任务和队列. 任务:在block中执行的代码块 队列:用来存放任务的队列线程的区别: 队列中存放的任务最后都要由线程来执行! 队列的原则:先进先出,后进后出队列分类:1.串行队列 2.并发队列 3
作者:大神Q这个问题之前也有看到,正好这两天看到一篇文章提到这个文艺,就深入的研究了一下,地址我的同事金司机出的 5 道 iOS线程“面试题”,其中第一题和第二题就是考察主线程主队列区别的。问题第一题(主线程只会执行主队列的任务吗?)let key = DispatchSpecificKey() DispatchQueue.main.setSpecific(key: key, value:
关键词的理解1. 进程正在运行的程序被称为进程,负责程序运行的内存分配,每一个进程都有独立的虚拟内存空间2. 线程线程是进程中最小的执行单元,一个进程可以有多条线程,但是至少包含一条线程,被称为主线程线程里有非常多的任务。同一时间单核CPU只能执行一个线程,多线程是CPU快速在多个线程之间切换,造成多个线程同时执行的假象多核CPU是真的同时处理多个线程3. 并行充分利用计算机的多核,在多个线程
GCD是苹果公司提供的方便调用的并发代码库。dispatch queue苹果提供了三种类型的调度队列主队列(global queue),全局队列(global dispatch queue)和自定义队列。--- 主队列是串行队列(队列里的任务一次只能执行一个),这个队列主线程相关联,和UI变化的任务一定要在这个队列中去执行--- 全局队列是并发队列,按照不同的优先级(high, default
  • 1
  • 2
  • 3
  • 4
  • 5