美文网首页
多线程之概念及常用线程的API

多线程之概念及常用线程的API

作者: 需要药 | 来源:发表于2017-12-04 15:17 被阅读0次

demo(自定义NSOperation子线程) 地址: github.com/lizhaojie/study_api.git

概念一:进程,线程

进程:是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内

线程:一个进程里至少有一条线程,在线程中执行任务

多线程原理:同一时间,CPU只能处理一条线程,多线程并发执行,其实是CPU快速的在多线程间切换,如果CPU切换线程的时间足够快,就造成了并发执行的假象。

多线程优点:能适当提高程序的执行效率,适当提高资源利用率(CPU,内存利用率)

多线程缺点:开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程512KB),如果开启大量的线程,会占用大量的内存空间,降低程序性能

另外线程越多,CPU在切换线程上的开销越大,程序设计也更加复杂:线程之间的通信,多线程的数据共享

概念二:队列

队列的类型

1>.全局队列:获取方法dispatch_get_global_queue

所有添加到全局队列中的任务都是并发执行(同时执行,可能会开启多个线程)

2>.串行队列: 创建方法dispatch_queue_create("oneQueue", DISPATCH_QUEUE_SERIAL)

3>.主队列: 获取方法dispatch_get_main_queue

添加到主队列的任务都在主线程中执行

常用API:

1.performSelectorInBackground:@selector() withObject:nil;

作用:新创建一条线程,异步执行

2.NSThread:(基于oc语言,生命周期手动管理)

类方法:detachNewThreadSelector:@selector(selectorName) toTarget:selfwithObject:nil

实例方法:initWithTarget:selfselector:@selector(selectorName) object:nil,

创建一个线程

需调用start方法开启线程

创建并启动一个线程

3. GCD:(基于c语言,生命周期自动管理,充分利用设备的多核特性)dispatch_asyn/dispatch_syn : 异步/同步执行

dispath_syn:不论什么队列,都不会创建新的线程,都在当前线程中执行

dispatch_asyn:肯定会开线程,当是全局队列时会开N条线程,串行队列时,只开1条线程

4.NSOperation:(基于oc语言,生命周期自动管理,底层是GCD,比GCD多了一些简单使用的功能,使用更加面向对象)

NSOperation是抽象类,不能直接使用,只能使用它的子类 (NSInvocationOperation,NSBlockOpertion,继承自NSOperation的子类)

NSInvocationOperation:可以脱离队列来执行任务,NSInvocationOperation是用来封装任务的,如果调用start方法,则会把任务放到主线程调用;只有放到队列中才在子线程执行;

NSBlockOperation也可以脱离队列来执行任务,一个操作可以有多个任务,每个操作的第一个任务是在主线程执行;而且还可以追加任务,追加的任务是在子线程执行

NSOperationQueue:只要是自己创建的队列,则任务就会在子线程中执行,而且是默认并发执行,除非最大并发数设置为1

相关文章

  • 多线程之概念及常用线程的API

    demo(自定义NSOperation子线程) 地址:github.com/lizhaojie/study_api...

  • Java 基础

    1. 基础语法 2. 面向对象 3. 常用API、常用类型 4. 集合 5. 多线程(线程状态、线程安全、线程池、...

  • 多线程

    常用的多线程 技术方案简介语言线程生命周期使用频率pthread一套通用的多线程API,适用于Unix\Linux...

  • iOS多线程技术方案

    目录 一、多线程简介 1、多线程的由来2、耗时操作的模拟试验3、进程和线程4、多线程的概念及原理5、多线程的优缺点...

  • 多线程之GCD

    线程、多线程 多线程存在的问题 为什么使用多线程? GCD GCD 的 API 介绍Dispatch QueueD...

  • iOS中常见锁

    pthread_mutex POSIX threads(简称Pthreads)定义了一套跨平台的多线程常用API,...

  • Objective-C之GCD多线程(二)

    前言 在Objective-C之GCD多线程(一)中,我们了解了一些常见常用的GCD的API。本文在前文的基础上,...

  • 多线程之GCD

    GCD,Grand Central Dispatch,iOS中常用的多线程技术,GCD提供C风格的API,相对NS...

  • Java 多线程之多线程原理

    一、线程的概念、特点及其作用 二、线程的工作原理 三、多线程的概念、特点及其作用 四、多线程中线程安全的概念及其原...

  • oc 多线程

    25:多线程 iOS多线程有哪些: 1:pthread : 一套通用的多线程API 适用于Unix\L...

网友评论

      本文标题:多线程之概念及常用线程的API

      本文链接:https://www.haomeiwen.com/subject/yrutixtx.html