iOS多线程与网络开发之多线程概述
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠。支持郝萌主,捐赠数额任意,重在心意^_^
我要捐赠: 点击捐赠
Cocos2d-X源代码下载:点我传送
游戏官方下载:http://dwz.cn/RwTjl
游戏视频预览:http://dwz.cn/RzHHd
游戏开发博客:http://dwz.cn/RzJzI
能适当提高程序的运行效率
能适当提高资源利用率(CPU、内存利用率)
多线程的缺点
开启线程须要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),假设开启大量的线程。会占用大量的内存空间,减少程序的性能
线程越多,CPU在调度线程上的开销就越大
程序设计更加复杂:比方线程之间的通信、多线程的数据共享
一个iOS程序运行后。默认会开启1条线程。称为“主线程”或“UI线程”
主线程的主要作用
显示\刷新UI界面
处理UI事件(比方点击事件、滚动事件、拖拽事件等)
主线程的使用注意
别将比較耗时的操作放到主线程中
1.NSThread
1> 开线程的几种方式
* 先创建,后启动
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
[thread start];
* 直接启动
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
[self performSelectorInBackground:@selector(run) withObject:nil];
2> 其它使用方法
NSThread *current = [NSThread currentThread];
+ (NSThread *)mainThread; // 获得主线程
3> 线程间通信
performSelectorOnMainThread.....
2.GCD(重点)
1> 队列的类型
* 并发队列
获得全局的并发队列: dispatch_get_global_queue
* 串行队列
a.自己创建
dispatch_queue_create
b.主队列
dispatch_get_main_queue
2> 运行任务的方法类型
* 同步(sync)运行
* 异步(async)运行
3> 了解队列和方法的配合使用
4> 线程间通信
dispatch_async(
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 运行耗时的异步操作...
dispatch_async(dispatch_get_main_queue(), ^{
// 回到主线程。运行UI刷新操作
});
});
5> 其它使用方法
dispatch_once
dispatch_after
dispatch_group_async\dispatch_group_notify
3.NSOperation
1> 基本使用
NSInvocationOperation
NSBlockOperation
2> NSOperationQueue(重点)
* 最大并发数设置
[operationB addDependency:operationA]; // 操作B依赖于操作A
3> 自己定义Operation(了解基本流程)
iOS多线程与网络开发之多线程概述相关推荐
- iOS开发-多线程开发之线程安全篇
前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象.同一个变量.同一个文件和同一个方法等.因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安 ...
- iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)
简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...
- 移动开发在路上-- IOS移动开发系列 多线程二
最近太忙没太多的时间,忙碌的码农生活空下来一点时间,都会挤出来看一些技术或者咨询的文章,废话不多说,直奔主题. 接着上一次的继续说. 定时器在多线程的使用 NSRunLoop 是线程相关的基础框架的一 ...
- iOS开发值多线程简单介绍
2019独角兽企业重金招聘Python工程师标准>>> 今天,我们就来说一下iOS多线程的问题,为什么要使用iOS多线程?因为一个应用程序在一个时间内可能有一个呗或者多任务,我们不可 ...
- iOS开发-10.多线程
1.iOS中的常见多线程方案 a) NSThread / GCD / NSOperation底层都是pthreadb) NSThread开启线程方式1) 动态实例化 NSThread *thread ...
- iOS开发系列--网络开发(转)
iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...
- iOS开发系列--网络开发
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- 笔记整理5----Java语言高级(五--完结)21 字符流与字节流+22 多线程+23 网络编程
21 字符流与字节流+22 多线程+23 网络编程 第10天 IO流 今日内容介绍 标准输入流 & 转换流 & 打印流 对象操作流 Properties集合 第1章标准输入 ...
- Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)
原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...
- 多线程编程技术开发资料
多线程编程技术开发资料 目录 Win32 多线程的性能(1)... 1 Win32 多线程的性能(2)... 10 关于多线程的一些细节... 23 用VC++5.0 实 现 多 线 程 的 调 度 ...
最新文章
- dp uva1218
- 河北工业机器人夹爪生产厂家_电动夹爪会成为“标配”吗?
- SAP ERP业务优化之非计划运输成本核算
- [转]ActiveX控件安全初始化之一:实现ISafeObject接口
- 服务器位置缩写,服务器地区缩写
- window.location和window.open的区别
- 软件测试 学习之路 MYSQL安装
- 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
- groupmod 修改用户组信息
- 自己开发的一套实用故障报修管理系统【分享推荐大家】
- 【读过的书】《蔡康永的说话之道》
- 涉足荒野script_涉足深度学习,转移学习和快速人工智能
- Android APK打包流程
- p720自带的磁带机备份aix系统
- obs-studio 二次封装(十)SDK 中添加降噪模块
- P1423 小玉在游泳 NOIP python题解
- 订单流失总金额怎么算_抖音直播脚本怎么写?直播脚本创作必备的7大要素
- java画满天星_上机题目(初级)- 绘制满天星(Java)
- adminLTE 教程 -1 基础
- 【吐血整理】正则表达式生成器java
热门文章
- Atitit opencv 模板匹配
- Atitit.HTTP 代理原理及实现 正向代理与反向代理attilax总结
- Atitit.故障排除系列---NoClassDefFoundError NoClassDefFoundError
- paip.提升性能---首页性能加快解决方案
- paip..net代码生成器使用总结
- Python: 组合管理与蒙特卡洛方法实现
- 超融合架构与传统IT架构的区别
- 黑岩集团创建者Larry Fink 超长访谈
- c语言怎样用vc绘图,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
- 【语音处理】基于matlab GUI音频数据处理【含Matlab源码 1734期】