美文网首页我的阅读
iOS进程(Process)和线程(Thread)

iOS进程(Process)和线程(Thread)

作者: ZhangXiaoxx | 来源:发表于2018-02-25 16:38 被阅读13次

进程(Process):系统中正在进行的一个应用程序(至少有一个线程,即为主线程)。

线程(Thread):程序的一段执行序列,是进程的一部分(轻量级进程)。

需要同时执行多个任务时就需要多线程,比如软件的下载,微信,浏览器。

并不是线程越多越好,因为开线程需要占用内存空间(默认主线程占用1M,子线程占用512KB)。开启多个线程CPU会在多条线程中调度,会消耗大量CPU资源。每条线程被调度执行的频率也会变低,程序设计的复杂度也会相对变高。

iOS多线程技术

1.PThread

几乎不用,提供了基于C语言的API,使用难度较大,需要开发者手动创建并销毁线程,可以自定义的功能较少

2.NSTread

偶尔使用,提供了基于OC的接口,使用PThread较简单,面向对象,需要自己管理线程的生命周期,线程的同步,加锁,开锁等情景。相对管理多个线程时较困难。

3.GCD(Grand Central Dispatch)

经常使用,基于C语言的底层的接口,使用block定义任务,使用起来灵活方便,开发者不用直接与线程打交道,只需要向队列中添加block即可

GCD中有三种队列类型:

The main queue:与主线程功能相同。实际上,提交至main queue的任务会在主线程中执行。main queue可以调用dispatch_get_main_queue()来获得。因为main queue是与主线程相关的,所以这是一个串行队列。

Global queues:全局队列是并发队列,并由整个进程共享。进程中存在三个全局队列:高、中(默认)、低三个优先级队列。可以调用dispatch_get_global_queue函数传入优先级来访问队列。

用户队列:用户队列 (GCD并不这样称呼这种队列, 但是没有一个特定的名字来形容这种队列,所以我们称其为用户队列) 是用函数 dispatch_queue_create

创建的队列. 这些队列是串行的。正因为如此,它们可以用来完成同步机制, 有点像传统线程中的mutex。

4.NSOperation

经常使用,面向对象的多线程技术,在GCD之上的OC的接口,提供了在GCD中不太容易实现的特性


相关文章

  • 浏览器的进程

    进程 (process) 和线程 (thread) 进程(process)和线程(thread)是操作系统的基本概...

  • iOS进程(Process)和线程(Thread)

    进程(Process):系统中正在进行的一个应用程序(至少有一个线程,即为主线程)。 线程(Thread):程序的...

  • 多线程入门

    重点: 线程的实现 线程的同步 Process(进程)和 Thread(线程) 进程中有线程,真正执行的是线程 ...

  • Python 多线程编程

    多线程编程 进程(process)和线程(thread) Linux 和 windows 是多任务操作系统, 这就...

  • Linux_130_进线程

    1.Linux下存在process和thread这两种操作系统基本概念process是进程,thread是线程计算...

  • 操作系统

    进程VS线程 Process/Thread 进程: 1. 进程是相对独立的 2. 包含多个线程 3. ...

  • vue面试题第十天

    1线程和进程得区别 什么是进程(Process):普通的解释就是,进程是程序的一次执行 什么是线程(Thread)...

  • 阿里大牛Java多线程学习笔记【记得看】

    多线程 线程 多任务,多线程 Process和Thread 在操作系统中运行的程序就是进程,一个进程可以有多个线程...

  • 进程和线程

    /* 进程(process)和线程(thread)是操作系统的基本概念。 进程是资源分配的最小单位,线程是程序执行...

  • 为什么校招面试中“线程与进程的区别”老是被问到?我该如何回答?

    进程与线程?(Process vs. Thread?) 面试官(正襟危坐中):给我说说“线程”与“进程”吧。 我(...

网友评论

    本文标题:iOS进程(Process)和线程(Thread)

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