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 ...
随机推荐
- WebLogic和Tomcat的区别
J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器.可以看出服务器在这种架构是非常重要的. 这几天接触到两种Java的web服务器,做项目用的Tom ...
- React Native之DeviceEventEmitter发送和接收消息完成事件处理
今天在Demo这样一个项目的时候,首先遇到的第一个问题就是,每次通过dialog选择[本周.本月.本天]时,伴随着内容重新渲染的时候,tab navigator每次都重新创建和渲染,造成性能浪费和用户 ...
- 1012 The Best Rank (25)(25 point(s))
problem To evaluate the performance of our first year CS majored students, we consider their grades ...
- navicat premium 的使用——navicat 连接MySQL数据库
最近,在学习navicat premium这款第三方软件,他是一个三方数据库管理软件,在前一段时间实习的时候,我使用这款软件调用过服务器上的数据库,不过,当时并没有仔细研究,再次遇到这个软件,我决定仔 ...
- [UOJ430]line
首先有个暴力DP,设$s_i=\sum\limits_{j\geq i}w_j$,有$f_i=\min\limits_{l_i\lt j\leq i}f_{j-1}+s_{i+1}\max\{t_{j ...
- [POI2000]Repetitions
题目大意: 求多个字符串的LCS. 思路: 同SPOJ-LCS2,不过因为SPOJ上数据比较水,当时用错误的写法过掉了,这次用正确的写法重新过了一遍. 拓扑排序按照每个状态的len值,用计数排序实现. ...
- Codeforces Round #358 (Div. 2) D. Alyona and Strings dp
D. Alyona and Strings 题目连接: http://www.codeforces.com/contest/682/problem/D Description After return ...
- CentOS 7编译openssl
# 编译安装zlib库wget http://zlib.net/zlib-1.2.11.tar.gztar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./conf ...
- [Dynamic Language] Python非子包引用
Python非子包引用 python的搜索路径其实是一个列表(sys.path) 导入模块时python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功. 在项目中如果要引用 ...
- cocos2d-x3.0 macOS下配置Android开发环境以及使用cocos2d-console来新建执行project
下面是子龙山人录制的关于cocos2d-x3.0的视频教程,macOS下配置Android开发环境.使用cocos2d-console来新建执行project.怎样执行cocos2d-x 3.0win ...