IOS

线程与进程

2018-05-18  本文已影响0人  FH_iOS

进程:在系统中运行的一个应用程序就是一个进程,每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内

线程:一个进程的所有任务都是在线程中执行的,每个进程都至少有一个线程(主线程),同一线程的代码是顺序执行的

多线程:一个进程可以开启多条线程,多条线程可以并行执行不同的任务,多线程的并行执行任务其实是CPU在多条线程之间切换调度 

优点: 

适当的提高了程序执行效率和资源的利用率,当线程执行完所有任务时会自动销毁; 

缺点: 

1.开启线程需要占用一定的内存空间;

2.开启大量线程占用过多内存,CPU在调用线程中开销过大,降低程序性能; 

3.程序设计更加复杂(如线程之间的通讯、线程间的资源共享等).

主线程:一个进程运行后,默认会开启一条线程,成为主线程或UI线程,其主要作用就是处理UI事件、显示刷新UI界面

进程:在系统中运行的一个应用程序就是一个进程,每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内

线程:一个进程的所有任务都是在线程中执行的,每个进程都至少有一个线程(主线程),同一线程的代码是顺序执行的

多线程:一个进程可以开启多条线程,多条线程可以并行执行不同的任务,多线程的并行执行任务其实是CPU在多条线程之间切换调度 

优点: 

适当的提高了程序执行效率和资源的利用率,当线程执行完所有任务时会自动销毁; 

缺点: 

1.开启线程需要占用一定的内存空间;(开启一个线程需要占用512KB) 

2.开启大量线程占用过多内存,CPU在调用线程中开销过大,降低程序性能; 

3.程序设计更加复杂(如线程之间的通讯、线程间的资源共享等).

主线程:一个进程运行后,默认会开启一条线程,成为主线程或UI线程,其主要作用就是处理UI事件、显示刷新UI界面

加锁: 

加锁能有效的防止因多线程抢夺资源造成的数据安全问题,但锁是非常耗费性能的,开发中尽量不要使用锁,将加锁、抢夺资源的逻辑交给服务器处理,减小移动客户端的压力. 

1)互斥锁:把读和写的操作当成不可分割的部分,也叫做同步锁; 

// 写法 

@synchrosized(self) { 

do something... 

作用: 

1.保证同一时间只有一条线程能访问共享资源,保证线程安全; 

2.当共享数据被一个线程锁定时,另外的线程进入’休眠状态’等待任务执行完毕;当锁定线程任务执行完毕,下个线程会自动唤醒,执行任务; 

上一篇下一篇

猜你喜欢

热点阅读