iOS开发-多线程简介
多线程从概念上理解是指从软件或者硬件上实现多个线程并发执行的技术,简单点理解就是同一时间可以执行多个事情(比如说一边听歌一边码代码),听歌是一个线程,码代码是一个线程,如果是单核CPU的话,上面两个动作其实可以确切的理解为并发,也就是伪并行,只是两者相差的时间太快没有察觉。电脑现在一般都是双核的或者四核的,比以往的运算能有提高了不少,iOS中六种可以选择的操作线程的方式,具体方式如下:

iOS和OS X线程的底层实现机制是Mach线程,我们基本不会处理线程到这个级别,一般应用中可以使用的线程管理技术有Cocoa threads,POSIX threads,Mulitprocessing Services,通过我们选择实战的方式就是Cocoa threads。

iOS和OS X中的应用可以是单线程也可以是多线程的,iOS的应用相当于一个PC上常说的进程,可以扩展子线程,扩展出来的子线程拥有可执行的栈和运行时调度在内存中。线程可以与其他线程或者进程之间通信,一般都是通过I/O读写操作或者其他你需要的方式。同一个应用中的线程拥有同样的虚拟内存空间和访问应用程序进程的权利,简单理解可以理解为在方法中可以访问全局变量。网上很多文章都讨论多线程,不过很少说一些具体线程的分配的空间,一下也是本人从苹果官网找的一张关于线程空间分配的图片:

创建底层线程是相对简单的,不过一个必要的条件就是必须有一个函数或方法作为线程的主要入口点,这样我们就可以简单的实例化一个NSThread线程来展示一下效果,NSThread有两种实例方法:
NSThread *myThread = [[NSThread alloc] initWithTarget:self
selector:@selector(methodTask)
object:nil]; [NSThread detachNewThreadSelector:@selector(methodDetachTask) toTarget:self withObject:nil];
调用方法:
-(void)methodTask{
NSLog(@"NSTread线程的调用");
}
-(void)methodDetachTask{
NSLog(@"Detach线程的调用");
}
参数解释:
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil;
如果你当前主线程正在运行,你想发送消息给主线程,可以通过performSelectorOnMainThread执行:
[self performSelectorOnMainThread:@selector(mainTask) withObject:nil waitUntilDone:YES];
调用方法:
-(void)mainTask{
NSLog(@"performSelectorOnMainThread线程的调用");
}
线程还有很多可以写的,写了一部分,大家将就着看吧,今天就先写到这里吧~
iOS开发-多线程简介的更多相关文章
- iOS开发多线程篇—多线程简介
iOS开发多线程篇-多线程简介 一.进程和线程 1.什么是进程 进程是指在系统中正在执行的一个应用程序 每一个进程之间是独立的.每一个进程均执行在其专用且受保护的内存空间内 比方同一时候打开QQ.Xc ...
- iOS开发多线程篇—GCD简介
iOS开发多线程篇—GCD介绍 一.简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 G ...
- iOS开发多线程篇—NSOperation简单介绍
iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...
- iOS开发——多线程OC篇&多线程详解
多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...
- iOS开发多线程篇 09 —NSOperation简单介绍
iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- iOS开发多线程篇—线程安全
iOS开发多线程篇—线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—创建线程
iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] in ...
随机推荐
- Android与GPL、BSD和Apache之间的关系
参考资料 Android ,在争议中逃离 Linux 内核的 GPL 约束 | 爱范儿 简介 众所周知,Linux内核基于GPL v2发行.GPL规定,基于GPL的软件产品的衍生产品,也必须使用GPL ...
- 美团 R 语言数据运营实战
一.引言 近年来,随着分布式数据处理技术的不断革新,Hive.Spark.Kylin.Impala.Presto 等工具不断推陈出新,对大数据集合的计算和存储成为现实,数据仓库/商业分析部门日益成为各 ...
- Top 5 SSH Clients for Windows (Alternatives of PuTTY)
这篇博文列举了可以替代putty的5个工具,有些实现了putty没有实现的一些功能.如下: PuTTy is the most popular SSH clients for Windows-base ...
- 网络图片嗅探工具driftnet
网络图片嗅探工具driftnet 图片是网络数据传输的重要内容.Kali Linux内置了一款专用工具drifnet.该工具可以支持实时嗅探和离线嗅探.它可以从数据流中提取JPEG和GIF这两种网 ...
- 从Table 表中取出第 m 条到第 n 条的记录
* FROM Table id FROM Table )) --从TABLE表中取出第m到n条记录 (Exists版本) * FROM TABLE AS a WHERE Not Exists ( * ...
- [CEOI2008]order --- 最小割
[CEOI2008]order 题目描述: 有N个任务,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数, ...
- UVALive 6886 Golf Bot FFT
Golf Bot 题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129724 Description Do ...
- Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造
Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 ht ...
- GoAhead2.5移植到ARM教程
1.下载GoAhead2.5 下载地址:https://github.com/embedthis/goahead/releases?after=v3.1.2 2.编译 先解压到虚拟机的/opt目录下, ...
- 封装scroll.js 获取滚动条的值
function Obj(){} Obj.prototype={ scroll:function(){ /* 主要是做兼容处理 这里必须时!=null 因为默认值和每次滚动的时侯 都可以值为0 但是 ...