GCD基本知识

1、纯C语言,提供了非常多的强大的函数。

2、GCD的核心:

将任务添加到队列。(任务:执行什么操作。队列:用来存放任务,特点是先进先出)

3、GCD的使用步骤:

-->创建任务(即确定要做的事情)。GCD中的任务是用block封装的。

-->将任务添加到队列中

>GCD会自动将队列中的任务取出,放到对应的线程中执行。

>任务从队列中取出原则:先进先出。

示例代码:

 1     // 1、创建队列
 2     // dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
 3
 4     // 2、创建任务:用Block指定(无参无返回值)
 5     // void(^task)() = ^{
 6     //    NSLog(@"%@",[NSThread currentThread]);
 7     // };
 8
 9     // 3、将任务添加到队列
10     // dispatch_async:表示任务是异步的
11     // dispatch_sync:表示任务是同步的
12     // dispatch_async(queue, task);
13
14     // 简写方式:
15     dispatch_async(dispatch_get_global_queue(0,0), ^{
16         NSLog(@"%@",[NSThread currentThread]);
17     });

GCD执行任务的2个函数:

1 // 同步的方式执行任务,在当前线程中依次执行任务
2 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
3
4 // 异步的方式执行任务,会开辟新线程,在新线程中执行任务
5 dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

GCD的2种队列类型:

队列:就是用来存放任务的,特点是先进先出。

1、串行队列:让任务一个接着一个的有序执行,不管队列里面放的是什么任务,都是一个任务执行完毕后,再执行下一个任务。

2、并行队列(又叫并发队列):

  2.1>可以让多个任务“并发/同时”执行,自动开启多个线程同时执行多个任务

  2.2>同时可以调度多个任务执行

  2.3>并发队列的并发功能只有内部的任务是异步任务时,才有效。

时间: 2024-08-07 00:16:54

GCD基本知识的相关文章

iOS 多线程知识总结 GCD基础知识

进程的基本概念: 1.每一个进程都是一个一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程存在一个进程,但也有多个进程的情况. 2.同一个进程中的线程共享内存中内存中资源. 多线程的基本概念: 1.每一个程序都有一个主线程,程序启动时创建(调用main函数来启动) 2.主线程的生命周期是和其他应用程序绑定的,程序退出时,主线程也就停止了. 3.多线程技术表示,一个应用程序有多个线程,使用多线程能提高CPU的使用效率,防止线程阻塞 4.任何有可能阻塞主线程的任务不要在主线程中执行(

GCD常用知识

GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务. 一个任务可以是一个函数(function)或者是一个block. GCD的底层依然是用线程实现,不过这样可以让程序员不用关注实现的细节. GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行. dispatch queue分为下面三种: Serial 又称为private dispatch queues,同时只执行一个任务.Serial queue通常

GCD基础知识

并行和并发 在英文世界里,「并行」和「并发」的区别比较清晰,「并行」对应parallelism,「并发」对应concurrency:但在中文世界里二者仅一字之差,两个概念非常容易弄混淆: 各种资料对「并行」和「并发」有各种各样的解释和比喻.我比较喜欢的一种是播客节目内核恐慌中的主播Rio的描述,大概意思是: 「并发」和「并行」是一种计算模型,使得计算机能够在同一时间处理多个任务:「并发」表示逻辑概念上的「同时」,「并行」表示物理概念上的「同时」. 简单来说,若说两个任务A和B并发执行,则表示任务

带你系统学习GCD(一)

欢迎走进夏天的Coding世界. 今天分享的关于GCD的知识, 对于GCD的说明: 开发者要做的知识定义想要执行的任务并对家到适当的Dispatch Queue中. 存在两种Dispatch Queue 见下表 Dispatch Queue的种类 说明 Serial Dispatch Queue 等待现在执行中处理结束 Concurrent Dispatch Queue 不等待现在执行中处理结束 Serial Dispatch Queue 使用一个线程 Concurrent Dispatch Q

创建线程方式-GCD

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

[BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)

[BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1<=N<=1000) ,经过协商,火星人只要其中的K 个 . jyy 将 K个瓶子交给火星人之后,火星人用它们装一些燃料给 jyy.所有的瓶子都没有刻度,只 在瓶口标注了容量,第i个瓶子的容量为Vi(Vi 为整数,并且满足1<=Vi<=10000

[翻译] About Core Image

About Core Image Core Image is an image processing and analysis technology designed to provide near real-time processing forstill and video images. It operates on image data types from the Core Graphics, Core Video, and Image I/Oframeworks, using eit

iOS 程序性能优化

前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写代码时就萦绕在我们脑子里.了解 iOS 程序性能优化的相关知识点,从一开始就把它们落实到代码中是一种好的习惯. 初级技巧 使用复用机制 在我们使用 UITableView 和 UICollectionView 时我们通常会遇到「复用 Cell」这个提法,所谓「复用 Cell」就是指当需要展示的数据条

iOS知识树,知识目录(包括对象、Block、消息转发、GCD、运行时、runloop、动画、Push、KVO、tableview,UIViewController、提交AppStore)

本文旨在总结iOS知识网络,该知识网络罗列出常见UIKit,Foundation的对象特点和一些使用经验:文本编辑采用树的形式,对知识点进行罗列,并标注一些使用经验(★)希望对初学者有用或给一些解决疑难杂症者提供思路:某些知识点会深入探讨:通过总结希望站在一个较高平台的角度全观Objective-C.知识树中有些是原创文章,有些则是转载网络上iOS大神的文章.笔者会尽量详细的介绍各个知识点.当然一个人的知识面是相当有限的,在给各位读者提供知识参考的同时,欢迎大家对本文提意见. /->UIView