ios多线程操作(一)—— 多线程基础与原理

一、进程

进程是指在系统中正在运行的一个应用程序,每个进程之间都是独立的,每个进程都运行在其专用且受保护的内存空间内

二、线程

一个进程要想执行任务就必须要有线程,每一个进程至少都要有一条线程。

线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。

线程又分为主线程和子线程:

主线程:一个ios程序运行后,默认会开启一条线程,称为“主线程”或“UI线程”,ios上任何UI的操作都在主线程上执行

子线程:除主线程外进程中得其他线程,程序中一般都将耗时的操作添加到子线程中,以避免卡住主线程。

三、线程的串行

一个线程中的任务执行都是按顺序执行的,也就是串行,假如要在一个线程中执行多个任务,那么就只能一个接一个按顺序执行这些任务。

同一个时间内一个线程就只能执行一个任务。

四、多线程

一个进程中可以开启多条线程,每条线程可以并发(同时)执行不同的任务。

多线程技术可以提高程序的执行效率。

例如有一款软件有个需求,需要在网络上下载3个文件,那么就可以分别开3条子线程在后台并发执行,而主线程可以不受影响的接受用户的请求

五、多线程原理

(1)、同一时间,CPU只能处理一条线程,只有一条线程在执行

(2)、多线程并发执行其实是CPU在多条线程之间快速的进行切换调度

(3)、如果CPU切换的时间足够快,就会造成多条线程并发执行的假象

(4)、如果线程过多那将会消耗大量的CPU资源,每条线程被调度执行的频次也会降低,这样就会造成“卡”的现象。

六、多线程的优缺点

优点:

(1)、能适当提高程序的执行效率

(2)、能适当提高资源(内存和CPU)利用率

缺点:

(1)、默认情况下,每一条线程都占用512K,线程所占用的大小可以修改,ios8以前的版本(具体忘记是哪个版本了)主线程是1M,子线程是512K,且大小不能修改

(2)、线程越多,CPU在线程调度上德开销就会越大

(3)、是程序设计更加复杂,比如线程间通信与多线程共享

时间: 2024-10-21 05:32:49

ios多线程操作(一)—— 多线程基础与原理的相关文章

iOS 数据库多线程操作

SQLite是支持多线程操作的, 需要在初始化database是做一个线程安全的config,参考下面链接,看起来比较复杂. http://www.cnblogs.com/wfwenchao/p/3964213.html 很多iOS项目中都使用FMDB这个第三方开源库,但FMDB不能在多个线程中共同一个FMDatabase对象,因为这个类本身不是线程安全的,如果这样使用会造成数据混乱等问题. 如要需要多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安全了. 首先用一个数据

iOS 多线程知识总结 GCD基础知识

进程的基本概念: 1.每一个进程都是一个一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程存在一个进程,但也有多个进程的情况. 2.同一个进程中的线程共享内存中内存中资源. 多线程的基本概念: 1.每一个程序都有一个主线程,程序启动时创建(调用main函数来启动) 2.主线程的生命周期是和其他应用程序绑定的,程序退出时,主线程也就停止了. 3.多线程技术表示,一个应用程序有多个线程,使用多线程能提高CPU的使用效率,防止线程阻塞 4.任何有可能阻塞主线程的任务不要在主线程中执行(

IOS多线程操作

多线程的概念 进程 ·正在运行中的程序被成为进程,负责程序运行的内存分配 ·没一个进程都有自己独立的虚拟内存空间 线程 ·线程是进程中一个独立的执行路径也称之为控制单元 ·一个进程至少包含一条线程,主线程 ·可以将耗时的执行路径如网络请求放在其他线程中执行 创建线程的目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时执行 还要解释一个概念:多任务调度系统 每个应用程序由操作系统分配的短暂的时间片(Timeslice)轮流使用CPU,由于CPU对每个时间片的处理速度非常快,

IOS异步和多线程操作&&在sqlite3中的应用

1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消耗时间,sqlite使用异步处理I/O操作. 当有多个事务对数据库进行操作,对应,也会有多个I/O操作. 操作系统将I/O操作,合理放入一个I/O队列.一次性将队列内的I/O操作提交给磁盘系统,并行处理多个I/O,提高效率.本人也没有特别深入研究. 2,异步和多线程 异步和多线程,都有能力实现,不阻

iOS进阶面试题----多线程

本文转载至 http://blog.csdn.net/xunyn/article/details/14525243 ios面试题多核并发应用 iOS面试题系列: iOS如何面试 iOS面试题(一) iOS基础面试题(二) iOS基础面试题(三) iOS基础面试题(四) iOS进阶面试题----Block部分 1 多线程是什么 多线程是个复杂的概念,按字面意思是同步完成多项任务,提高了资源的使用效率,从硬件.操作系统.应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU

黑马程序员-Java多线程操作

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!--- Java中的线程 一个程序的运行需要启动一个应用进程,一个进程可以创建多个线程,帮助应用完成多任务操作,实现并发运行.在Java中线程是被封装成Thread类,进行多线程操作时只需要继承一个Thread类,实现自己的功能即可,然后开启此线程,或者你也可以实现一个Runnable接口,然后将其传递给Thread对象,然后再启动它. 线程的创建于启动 继承Thread 创建一个类并继承Thread类,然后实现Thr

iOS开发--四种多线程技术方案

iOS 多线程的四种技术方案 image pthread 实现多线程操作 代码实现: void * run(void *param) { for (NSInteger i = 0; i < 1000; i++) { NSLog(@"---buttonclick---%zd---%@", i, [NSThread currentThread]); } return NULL; } @implementation ViewController - (IBAction)clickBut

iOS开发——多线程OC篇&amp;多线程总结

多线程总结 1 //1.NSThread 2 /** 3 优点:NSThread 比其他两个轻量级. 4 缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销. 5 cocoa给我提供了两种方法生成线程: 6 1: 7 - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument 8 NSThread* thread = [[NSThread alloc] initWithTa

iOS的三种多线程技术NSThread/NSOperation/GCD

1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心线程的具体使用问题 NSOperation/NSOperationQueue 面向对象的线程技术 GCD -- Grand Central Dispatch(派发) 是基于C语言的框架,可以充分利用多核,是苹果推荐使用的多线程技术. 以上这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,

多线程系列(1)多线程基础和Thread

因为现项目中有用到多线程和并发的知识,所以打算近期补习一下多线程相关的内容.第一篇文章从最基础的开始,就是如何开启一个线程,如何启动线程和阻塞线程等,这篇文章分以下几点进行总结. 多线程初印象 多线程的使用场景 线程的启动,挂起和终止 一个简单的多线程实例 多线程初印象 首先通过一张图来了解一下进程Process,应用程序域AppDomain和线程Thread之间的关系. 从图中可以总结出以下几点: 一个进程Process可能包含多个应用程序域,也包含多个线程,线程也可以穿梭于多个应用程序域当中