进程、单线程、多线程

文章出处:https://www.jianshu.com/p/f3f67c82f5ef

程序、进程、线程

程序:由源代码生成的可执行应用。 (例如:QQ.weChat等 app)

进程:一个正在运行的程序可以看做一个进程,(例如:正在运行的QQ就是一个进程),进程拥有独立运行所需要的全部资源

线程:程序中独立运行的代码段。(例如:接收QQ消息的代码)

一个进程是由一或多个线程组成,进程只负责资源的调度和分配,线程才是程序真正的执行单元,负责代码的执行。

单线程

每个正在运行的程序(即进程),至少包括一个线程,这个线程叫主线程

主线程在程序启动时被创建,用于执行main函数

只有一个主线程的程序,称作单线程程序

主线程负责执行程序的所有代码(UI展现以及刷新,网络请求,本地存储等等)。这些代码只能顺序执行,无法并发执行

多线程

拥有多个线程的程序,称作多线程程序。

iOS允许用户自己开辟新的线程,相对于主线程来讲,这些线程,称为子线程

可以根据需要开辟若干子线程

子线程和主线程都是独立的运行单元,各自的执行互不影响,因此能够并发执行

单线程、多线程的区别

单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞(页面假死)

多线程程序:有多个线程,线程间独立运行,能有效地避免代码阻塞,并且提高程序的运行性能

  • 注意:iOS中关于UI的添加和刷新必须在主线程中操作
  • iOS多线程 实现种类
  • NSThread  (轻量级多线程)
  • NSOperationQueue
  • NSObject
  • GCD
  • NSThread

  PS:

  • 在多线程方法中,需要添加自动释放池
  • 在应用程序打开的时候,系统会自动为主线程创建一个自动释放池
  • 我们手动创建的子线程需要我们手动添加自动释放池.

  整理后笔记:

  每一个独立 app都是一个进程,一个进程可以是单线程或者多线程。单线程就是程序按顺序依次运行,多线程有主线程和若干子线程,子主都是独立单元运行,每个线程拥有进程的所有共享资源,每线程独立运行,可拥有各自的堆栈,计数器等,但每个线程在任何时候都可以被挂起,便于其它线程的运行,线程之间可以共享内存,进程内存独立;多线程需要添加自动释放池,进程则不用

  CPU只能运行一个进程、CPU将在多个进程之间轮流切换,速度惊人才不会令人感到卡顿

  目前操作系统大多采用效率更高的抢占式多任务策略,例如WindowsNT、windows2000以及UNIX/Linux等操作系统。

 

猜你喜欢

转载自www.cnblogs.com/Shd-Study/p/9297273.html