郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助,欢迎给作者捐赠。支持郝萌主,捐赠数额任意,重在心意^_^

我要捐赠: 点击捐赠

Cocos2d-X源代码下载:点我传送

游戏官方下载:http://dwz.cn/RwTjl

游戏视频预览:http://dwz.cn/RzHHd

游戏开发博客:http://dwz.cn/RzJzI

游戏源代码传送:http://dwz.cn/Nret1

多线程的长处
能适当提高程序的运行效率
能适当提高资源利用率(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(重点)
* 最大并发数设置

iOS多线程与网络开发之多线程概述相关推荐

  1. iOS开发-多线程开发之线程安全篇

    前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象.同一个变量.同一个文件和同一个方法等.因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安 ...

  2. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

    简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...

  3. 移动开发在路上-- IOS移动开发系列 多线程二

    最近太忙没太多的时间,忙碌的码农生活空下来一点时间,都会挤出来看一些技术或者咨询的文章,废话不多说,直奔主题. 接着上一次的继续说. 定时器在多线程的使用 NSRunLoop 是线程相关的基础框架的一 ...

  4. iOS开发值多线程简单介绍

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们就来说一下iOS多线程的问题,为什么要使用iOS多线程?因为一个应用程序在一个时间内可能有一个呗或者多任务,我们不可 ...

  5. iOS开发-10.多线程

    1.iOS中的常见多线程方案 a) NSThread / GCD / NSOperation底层都是pthreadb) NSThread开启线程方式1) 动态实例化 NSThread *thread ...

  6. iOS开发系列--网络开发(转)

    iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...

  7. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  8. 笔记整理5----Java语言高级(五--完结)21 字符流与字节流+22 多线程+23 网络编程

    21 字符流与字节流+22 多线程+23 网络编程 第10天 IO流 今日内容介绍  标准输入流 & 转换流 & 打印流  对象操作流  Properties集合 第1章标准输入 ...

  9. Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)

    原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...

  10. 多线程编程技术开发资料

    多线程编程技术开发资料 目录 Win32 多线程的性能(1)... 1 Win32 多线程的性能(2)... 10 关于多线程的一些细节... 23 用VC++5.0 实 现 多 线 程 的 调 度  ...

最新文章

  1. dp uva1218
  2. 河北工业机器人夹爪生产厂家_电动夹爪会成为“标配”吗?
  3. SAP ERP业务优化之非计划运输成本核算
  4. [转]ActiveX控件安全初始化之一:实现ISafeObject接口
  5. 服务器位置缩写,服务器地区缩写
  6. window.location和window.open的区别
  7. 软件测试 学习之路 MYSQL安装
  8. 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
  9. groupmod 修改用户组信息
  10. 自己开发的一套实用故障报修管理系统【分享推荐大家】
  11. 【读过的书】《蔡康永的说话之道》
  12. 涉足荒野script_涉足深度学习,转移学习和快速人工智能
  13. Android APK打包流程
  14. p720自带的磁带机备份aix系统
  15. obs-studio 二次封装(十)SDK 中添加降噪模块
  16. P1423 小玉在游泳 NOIP python题解
  17. 订单流失总金额怎么算_抖音直播脚本怎么写?直播脚本创作必备的7大要素
  18. java画满天星_上机题目(初级)- 绘制满天星(Java)
  19. adminLTE 教程 -1 基础
  20. 【吐血整理】正则表达式生成器java

热门文章

  1. Atitit opencv 模板匹配
  2. Atitit.HTTP 代理原理及实现 正向代理与反向代理attilax总结
  3. Atitit.故障排除系列---NoClassDefFoundError NoClassDefFoundError
  4. paip.提升性能---首页性能加快解决方案
  5. paip..net代码生成器使用总结
  6. Python: 组合管理与蒙特卡洛方法实现
  7. 超融合架构与传统IT架构的区别
  8. 黑岩集团创建者Larry Fink 超长访谈
  9. c语言怎样用vc绘图,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  10. 【语音处理】基于matlab GUI音频数据处理【含Matlab源码 1734期】