文档章节

关于多线程的一些笔记📒

KevinEmily
 KevinEmily
发布于 2016/01/27 18:50
字数 728
阅读 83
收藏 6

1.创建定时源:

      /*1.间隔时间;2.对象;3.方法;4.自定义参数;5.是否重复*/

2.把定时源加入到当前线程的消息循环中

/*1.定时源;2.模式(1)NSDefaultRunLoopMode:拖动界面timer不运行(2)NSRunLoopCommonModes:拖动界面 TImer不受影响 */

[NSRunLoop currentRunLoop]addTimer

3.消息循环

(1)创建消息

(2)把消息放入循环,并指定消息的运行模式

(3)

4.子线程的消息循环

(1)创建子线程(2)往子线程的消息循环添加输入源(3)开启子线程的消息循环 <1> run开启之后关不了

<2>runUntilDate 指定时间间隔<3>apple推荐:通过全局布尔变量控制

特点:子线程默认不开启消息循环,主线程默认开启循环

5.GCD:Grand Central Dispatch  纯C语言 使用简单不管生命周期

定制任务:确定想做的事情

将任务添加到队列中:指定运行方式

GCD会自动将队列中的任务取出

任务的取出遵循队列的FIFO原则:先进先出,后进后出

6. (1)指定要干什么  block任务  dispatch_block_t   没有返回值  没有参数

  (2)队列 dispatch_queue_t

    (3)把任务加入到队列中dispatch_async(队列,任务)

简化写法:合起来

7.GCD线程通信:

(1)//闭包:能够调用其他方法内部的变量

(2)任务的执行方式:

//并发队列:可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)

//串行队列:让任务一个接着一个的执行(一个任务执行完毕后再执行下一个任务)

//主队列:特殊的串行队列,代表主线程  永远在主线程执行  等主线程不忙时  才调度任务去主线程运行

(3)要不要开启新的线程

//同步执行(synchroniz):在当前线程中执行,不具备开启新线程的能力

// 异步执行(Asynchronize):在新的线程中执行任务

8.串行队列同步:在当前线程有序运行

   串行队列异步:开启一个新的线程  有序执行

   并发队列异步:开启多个新线程  任务无序执行(效率最大)

   并发队列同步:没有开启新的线程  有序执行

   主队列异步:永远在主线程  不开新的线程  有序执行

   主队列同步:运行不了--死锁:主线程任务执行完,主队列才会调度主线程去执行block任务

9.延迟执行:dispatch_after  精度高  纳秒

10.队列组: 等待组里面的异步任务全部执行完成再去执行其他任务

11.一次性执行:dispatch_once  用在单例模式

12.单例模式:整个app中只有一个类的实例化对象





Emily.Wang

© 著作权归作者所有

共有 人打赏支持
上一篇: GCD笔记
KevinEmily
粉丝 18
博文 40
码字总数 23590
作品 0
东城
私信 提问
加载中

评论(2)

KevinEmily
KevinEmily

引用来自“开源中国osc”的评论

标题最后一个乱码是啥
是一个图 笔记的图
开源中国段子手
开源中国段子手
标题最后一个乱码是啥
iOS多线程全面解读(一):概述、NSThread

前言 本系列文章列表 概述、NSThread GCD NSOperation 锁 为什么会写这系列文章? 现在网络上有着大量的关于多线程的文章,“深入剖析”、“底层原理”这些看似高大上的字眼很多,然而大部分...

indulge_in
2017/11/30
0
0
学习笔记DL001 : 数学符号、深度学习的概念

数学符号。 数和数组。𝑎,标量(整数或实数)。𝒂,向量。𝑨,矩阵。𝗔,张量。𝑰𝑛,𝑛行𝑛列单位矩阵。𝑰,维度蕴含上下文单位矩阵。𝑒⁽ⁿ⁾,标准基向量[0,…,0,10,…...

利炳根
2017/11/17
0
0
关于iOS多线程,这边勉强可以看看(OC&Swift)

iOS开发多线程总是绕不过的坎,看了很多前辈们优秀的文章,如:关于iOS多线程,我说,你听,没准你就懂了!、谈iOS多线程(NSThread、NSOperation、GCD)编程、iOS多线程:『GCD』详尽总结、i...

Andy_Ron
2018/08/26
0
0
IDA Pro 逆向速参(链接)

IDA Pro 逆向速参(链接) 整理:PeterDocter 【 IDA】使用IDA load file功能,导入JNI.h解析【JNI 函数】 - CSDN博客 IDA Pro 导入jni.h头文件定义 - CSDN博客 [讨论]IDA中F5功能反编译安卓...

2018/01/14
0
0
如何在 Arch Linux(UEFI)上安装 GRUB

前段时间,我写了一篇在安装 Windows 后在 Arch Linux 上如何重新安装 Grub的教程。 几周前,我不得不在我的笔记本上从头开始重新安装 Arch Linux,同时我发现安装 Grub 并不像我想的那么简单...

作者: Francesco Mondello
2018/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部