iOS多线程之一:基本概念

计算机操作系统都有的基本概念,以下概念简单方式来描述。

进程:就是一个正在执行的程序。 线程:是执行程序最基本的单元,它有自己栈和寄存器。

进程和线程的区别 进程和线程的主要差别在于它们是不同的操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

并发:多个任务同时发生,需要被处理。比如,田径赛场上的起跑线上有多个运动员等待起跑。 并行:在某一个时间能够同时处理多个任务。比如,火车站开放了多个检票口,同一时间能够服务多个旅客。 串行:线程执行只能依次逐一先后有序的执行,串行中,一个任务的执行必须以上一个任务执行结束为前提。

串行和并行主要区别在于一个任务的执行是否以上一个任务的完成为前提。串行中,一个任务的执行必须以上一个任务执行结束为前提,并行中,一个任务的执行与上一个任务的执行状态无关。以排队买票为例,串行像单个买票队伍,单个卖票窗口,必须一个一个来,串行像单个买票队伍,多个卖票窗口,多个人可以同时买票。

同步:就是顺序往下执行。举例:烧完水后泡茶 异步:就是几件事情同时在执行。烧水的时候拿出茶具,洗茶具,然后泡茶。其中烧水和拿茶具,洗茶具是同时进行的。

二、iOS多线程方案

iOS中其实目前有4套多线程方案,他们分别是: 1、pthreads 2、NSThread 3、GCD 4、NSOperation & NSOperationQueue

参考:(http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏斑斓

Redux框架reducer对状态的处理

前言 在react+redux项目里,关于reducer处理state的方式,在redux官方文档中有这样一段描述: 不要修改 state。 使用 Objec...

37850
来自专栏Golang语言社区

Golang工程经验(上)

作为一个C/C++的开发者而言,开启Golang语言开发之路是很容易的,从语法、语义上的理解到工程开发,都能够快速熟悉起来;相比C、C++,Golang语言更简...

64520
来自专栏北京马哥教育

MongoDB多纬度监控方法详解

一、mongostat工具方法 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如...

48050
来自专栏C++

python笔记:#002#第一个python程序

13040
来自专栏SDNLAB

OpenFlow协议库开发者指南

介绍 OpenFlow协议库是OpenDaylight的一个组件,调解OpenDaylight controller和支持OpenFlow协议的硬件设备之间通...

62980
来自专栏ascii0x03的安全笔记

Lua编写wireshark插件初探——解析Websocket上的MQTT协议

一、背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据...

789140
来自专栏杨建荣的学习笔记

一个细小的空间问题触发的报警(r11笔记第68天)

今天有一个数据库服务器报警,报警信息是来自于一个异机备库。可以看到这台服务器空间只有300多G,而剩余空间只剩下了不到30G.所以这样一个问题就很奇怪了...

37170
来自专栏菩提树下的杨过

rpc框架之 thrift 学习 1 - 安装 及 hello world

thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:htt...

37190
来自专栏信安之路

ring3层恶意代码实例汇总

之前一期我们学习了 IAT 的基本结构,相信大家对 C++ 有了一个基本的认识,这一期放点干货,我把 ring3 层恶意代码常用的编程技术给大家整理了一下,所有...

15800
来自专栏竹清助手

NodeJS错误处理最佳实践

NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管。但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学。如果...

26730

扫码关注云+社区

领取腾讯云代金券