单线程、多线程的区别
2015-06-11 09:55
447 查看
程序、进程、线程
程序:由源代码生成的可执行应用。 (例如:QQ.app)
进程:一个正在运行的程序可以看做一个进程,(例如:正在运行的QQ警示一个劲曾),进程拥有独立运行所需要的全部资源
线程:程序中独立运行的代码段。(例如:接收QQ消息的代码)
一个进程是由一或多个线程组成,进程只负责资源的调度和分配,线程才是程序真正的执行单元,负责代码的执行。
单线程
每个正在运行的程序(即进程),至少包括一个线程,这个线程叫主线程
主线程在程序启动时被创建,用于执行main函数
只有一个主线程的程序,称作单线程程序
主线程负责执行程序的所有代码(UI展现以及刷新,网络请求,本地存储等等)。这些代码只能顺序执行,无法并发执行
多线程
拥有多个线程的程序,称作多线程程序。
iOS允许用户自己开辟新的线程,相对于主线程来讲,这些线程,称为子线程
可以根据需要开辟若干子线程
子线程和主线程都是独立的运行单元,各自的执行互不影响,因此能够并发执行
单线程、多线程的区别
单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞(页面假死)
多线程程序:有多个线程,线程间独立运行,能有效地避免代码阻塞,并且提高程序的运行性能
注意:iOS中关于UI的添加和刷新必须在主线程中操作
iOS平台下得多线程
iOS多线程 实现种类
NSThread
NSOperationQueue
NSObject
GCD
NSThread
NSThread是一个轻量级的多线程,它有以下两种创建方法:
注意:
在多线程方法中,需要添加自动释放池
在应用程序打开的时候,系统会自动为主线程创建一个自动释放池
我们手动创建的子线程需要我们手动添加自动释放池
程序:由源代码生成的可执行应用。 (例如:QQ.app)
进程:一个正在运行的程序可以看做一个进程,(例如:正在运行的QQ警示一个劲曾),进程拥有独立运行所需要的全部资源
线程:程序中独立运行的代码段。(例如:接收QQ消息的代码)
一个进程是由一或多个线程组成,进程只负责资源的调度和分配,线程才是程序真正的执行单元,负责代码的执行。
单线程
每个正在运行的程序(即进程),至少包括一个线程,这个线程叫主线程
主线程在程序启动时被创建,用于执行main函数
只有一个主线程的程序,称作单线程程序
主线程负责执行程序的所有代码(UI展现以及刷新,网络请求,本地存储等等)。这些代码只能顺序执行,无法并发执行
多线程
拥有多个线程的程序,称作多线程程序。
iOS允许用户自己开辟新的线程,相对于主线程来讲,这些线程,称为子线程
可以根据需要开辟若干子线程
子线程和主线程都是独立的运行单元,各自的执行互不影响,因此能够并发执行
单线程、多线程的区别
单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞(页面假死)
多线程程序:有多个线程,线程间独立运行,能有效地避免代码阻塞,并且提高程序的运行性能
注意:iOS中关于UI的添加和刷新必须在主线程中操作
iOS平台下得多线程
iOS多线程 实现种类
NSThread
NSOperationQueue
NSObject
GCD
NSThread
NSThread是一个轻量级的多线程,它有以下两种创建方法:
注意:
在多线程方法中,需要添加自动释放池
在应用程序打开的时候,系统会自动为主线程创建一个自动释放池
我们手动创建的子线程需要我们手动添加自动释放池
相关文章推荐
- struts2取值方法
- php调用Python接口的方法
- 从上往下打印二叉树
- 大明湖畔
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!
- ASIHTTPRequest开源类项目导入问题及解决方法
- STlink V2 烧录器使用教学 【STM32篇】
- 物料价格分析取未分摊和未分配价格差异
- 菜鸟学Linux二
- 在vim(gvim)中运行终端(对,你没有看错,我也没有写反)
- MongoDB C# CRUD (3)
- wampserver安装之后连接phpMyAdmin 不成功的解决方法
- 抓包工具Fiddler使用宝典之捕获手机报文
- MySQL 性能优化的最佳 20+ 条经验
- MUI实战开发第四集--如何增加自定义icon图标
- opencv利用cvCalcHist获得手的肤色直方图的比较汇总
- Effective C++ 条款48
- MR21批量修改物料价格-BDC
- java中将点替换成File.separator