美文网首页
Objective-C 线程篇(一): 线程、进程相关常见几个名

Objective-C 线程篇(一): 线程、进程相关常见几个名

作者: Tenloy | 来源:发表于2018-10-17 16:17 被阅读64次

# 并发:

同一时间段有几个程序都处于已经启动到运行完毕之间,并且这几个程序都在同一个处理机上运行,并发的两种关系是同步和互斥

# 并行:

单处理器中进程被交替执行,表现出一种并发的外部特征;在多处理器中,进程可以交替执行,还能重叠执行,实现并行处理,并行就是同时发生的多个并发事件,具有并发的含义,但并发不一定是并行,也就是说事件之间不一定要同一时刻发生

并行是指同一时刻同时做多件事情,而并发是指同一时间间隔内做多件事情。
并行是任务在同一时间运行,例如,在多核处理器上,并发是两个任务可以在重叠的时间段内启动,运行和完成。

并行是并发,但并发不一定是并行,比如:

我们说资源请求并发数达到了1万。这里的意思是有1万个请求同时过来了。但是这里很明显不可能真正的同时去处理这1万个请求的吧!如果这台机器的处理器有4个核心,不考虑超线程,那么我们认为同时会有4个线程在跑。
也就是说,并发访问数是1万,而底层真实的并行处理的请求数是4。如果并发数小一些只有4的话,又或者你的机器牛逼有1万个核心,"那并发在这里和并行一个效果"。也就是说,并发可以是虚拟的同时执行,也可以是真的同时执行。而并行的意思是真的同时执行。
结论是:
  并行是我们物理时空观下的同时执行
  并发则是操作系统用线程这个模型抽象之后站在线程的视角上看到的“同时”执行。

并行执行的处理数量取决于打得当前系统的状态,即iOS和 OS X基于Dispatch Queue中的处理数、CPU核数以及CPU负荷等当前系统的状态来决定并行队列中并行执行的处理数

# 互斥:

进程之间访问临界资源时相互排斥的现象

# 同步:

进程之间存在依赖关系,一个进程结束的输出作为另一个进程的输入。具有同步关系的一组并发进程之间发送的信息称为消息或者事件

# 异步:

和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。线程是实现异步的一个方式,异步是让调用方法的主线程不需要同步等待另一个线程的完成,从而让主线程干其他事情。

# 多线程:

多线程是进程中并发运行的一段代码,能够实现线程之间的切换执行

# 异步和多线程:

不是同等关系,异步是目的,多线程只是实现异步的一个手段,实现异步可以采用多线程技术或者交给其他进程来处理。

你可以看下下面的例子,还是以你的场景为例,一个火车站为一个进程,一个窗口和售票员的组合为一个线程(你说的只有窗口没有售票员这种情况是不对的,相当于只暴露了接口,没有实现,我们买票的人也不会去这种空窗口买票的!!):

多线程:
  火车站开了N个窗口售票员,我们去买票,会有工作人员(CPU)指定我们去某个窗口买票,你被安排到某个窗口后,告诉售票员你的请求(咨询或买票),售票员执行操作,如果这个过程中发送的阻塞,也是窗口售票员的阻塞(比如查票的过程),但是因为你开了很多个窗口,其他买票的人可以被安排去另外的空闲窗口,如果所有窗口都满了,工作人员就不会给你安排了,直到有空的窗口出来;

多进程(并行):
  建多个火车站售票,火车站与火车站间互不影响,看买票的自己想去哪里(这里不讨论负载均衡);

异步:
  火车站只有一个窗口售票员,但是窗口前有一个登记台(事件循环),你把你想买的票告诉给登记台,并留下你的手机(回调函数),然后你就可以走了,由于登记台只是登记了你的请求,并没有做任何其他操作,所以这个耗时基本忽略不计的。之后售票员处理完了上一个任务了,就会自己去登记台取剩下的未完成的任务,直到取到你的任务,操作完后,有票没票都会通过手机通知你,如果有票还会往你的手机发车票的二维码;

所以异步的操作对客户端来说是最节省时间的

相关文章

  • Objective-C 线程篇(一): 线程、进程相关常见几个名

    # 并发: 同一时间段有几个程序都处于已经启动到运行完毕之间,并且这几个程序都在同一个处理机上运行,并发的两种关系...

  • 进程与线程、线程池

    进程与线程的相关总结进程与线程的简单解释进程: 基本的资源分配资源线程: 最小调度单元 线程安全 线程安全是多线程...

  • ios - 多线程之一:概念介绍

    多线程及其相关概念 字面意思:多线程,多个线程 相关名词介绍 进程 什么是进程? 进程是指在系统中正在运行的一个应...

  • Java多线程--线程及相关的Java API

    Java多线程--线程及相关的Java API 线程与进程 进程是线程的容器,程序是指令、数据的组织形式,进程是程...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • AnsyncTask异步任务

    相关概念: 1)什么是多线程: 进程:运行中的程序 线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放...

  • Java多线程中的10个面试要点

    1、进程与线程区别以及线程相关概念 进程就是运行中的程序,每个进程占用独自的内存空间;线程属于进程,一个进程可以有...

  • Python多线程与多进程

    内容简述: 线程与进程的相关概念1、程序,进程,线程,多进程,多线程2、线程的生命周期3、并行与并发,同步与异步4...

  • Python学习17-多线程

    查看所有Python相关学习笔记 多线程开发: 进程: 进程的概念:运行着的程序每个进程至少包含一个线程线程是操作...

  • Android学习之旅-Android中的多进程模式[艺术探索学

    进程与线程 在学习多进程之前有必要了解下进程与线程的区别以及相关的概念,线程是 CPU调度的最小单元,同时线程是一...

网友评论

      本文标题:Objective-C 线程篇(一): 线程、进程相关常见几个名

      本文链接:https://www.haomeiwen.com/subject/pterzftx.html