美文网首页
异步,多线程和并行的区别?

异步,多线程和并行的区别?

作者: George2016 | 来源:发表于2018-03-05 18:18 被阅读13次

先听一个故事:

在没有12306的年代,大家买票只能去火车站买。
因为大家都要过年回家,都还不想等,火车站只有一个,窗口只有那么多,头疼啊。
更头疼的是,排到窗口的那个人,各种挑剔,不要贵的,不要晚上的,不要站票......跟售票员各种墨迹,后面的人更加着急,一个个义愤填膺,骂爹骂娘。

现在假设整个城市就只有1个火车,1个售票员,每个乘客咨询售票员后需要思考1分钟再决定买哪趟车的票。

  1. 异步:在买票的人咨询后,需要思考1分钟,马上靠边站,但不用重新排队,什么时候想清楚可以立马去跟售票员去买票。在该人站在旁边思考的时候,后面的人赶紧上去接着买。这时候队伍是很快的挪动的,没有阻塞,售票员的最大化的效率。

  2. 多线程:火车站开n个窗口(但还是只有一个人售票),外面同时排n个队,售票员回答咨询者问题后,立马马上去下个窗口,然后继续轮换到下个窗口.....哪个窗口的人决定好了,售票员立马过去买给他。这个时候乘客比较简单,但万一那个队伍有人思考半天纠结,后面的人就悲剧了。

  3. 并行:复制n个火车站,同时卖票,买票能力大大增强。大家也可以哪个火车站人少,就去那个买票。

可见:

在只有一个火车站,且只有一个售票员的情况下,卖完一个再卖一个就会导致资源浪费,效率低下,队伍卡死,很难往前挪动。1,2优化的办法都解决了队伍不动,售票率低下的问题。但增加火车站,增加窗口,增加售票员才是好办法。

结论:

  1. 异步和多线程其实效率差不多,但是开的窗口不多例如3个,同时有很多人都是去花5分钟,而不是1分钟去纠结的时候,多线程效率实际是低于异步的,因为售票员还是常遇到3个队伍同时卡在那纠结不能买票的时候。

  2. 这2个概念拿来对比也有点不合适,因为他们不是一个概念,多线程的目的还是为了实现异步,多线程应该是一种实现异步的手段。异步应该去跟同步比较才对。

  3. 多线程比较简单,但需要增设窗口,增加成本,且售票员比较累这类似apache下php,和node.js下javascript的关系,一个是多线程,但是是阻塞的,另外一个是单线程异步非阻塞的。php的方案比较符合常规思维,但比较费内存,node.js非阻塞,用较少的资源就能完成同样的任务,但编程比较费神。

  4. 并行,类似同时利用多核cpu的各个核去计算。并发可分为伪并发、真并发。前者例如单核处理器的并发,后者发是指多核处理器的并发。

  5. 终极办法是并行计算,并且每个cpu下进行异步计算,这样你的每个核都充分利用。只不过对编程要求太高了太高了,如果不是密集型计算,例如大型有限元计算(多采用并发),或者服务器同时处理上千的访问(多采用异步或者多线程),还是老老实实的用传统的办法吧,毕竟常规程序的计算量对现在的硬件来说,问题都不大。

相关文章

  • iOS 整理-线程篇

    什么是进程和线程进程和线程之间的关系什么是任务和队列多线程中同步异步,串行并行iOS中多线程的区别:NSThrea...

  • 异步,多线程和并行的区别?

    先听一个故事: 在没有12306的年代,大家买票只能去火车站买。因为大家都要过年回家,都还不想等,火车站只有一个,...

  • 10.1 并发(concurrency)和并行(parallel

    10.1 并发(concurrency)和并行(parallelism)区别问题一:并发与并行的区别? 异步和这小...

  • 异步编程

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 异步和这小节的...

  • 并发和并行,异步与多线程区别

    https://blog.csdn.net/woliuyunyicai/article/details/45165869

  • Java面试题(二):多线程

    五、多线程 35. 并行和并发有什么区别? 并发(concurrency)和并行(parallellism)是: ...

  • 异步和并行的区别

  • ObjC-多线程之GCD

    介绍 基本概念 串行和并行 并发和并行 下图描述的就是并发和并行的区别。 同步和异步 函数说明 Dispatch ...

  • 多线程GCD的使用

    一、同步/异步、串行/并行的区别 1.同步/异步 同步/异步是指线程与线程之间的关系。 2.串行/并行 串行、并行...

  • 线程并行学习笔记

    一、线程并行相关概念 同步(Synchronous)和异步(Asynchronous) 同步和异步的本质区别是是否...

网友评论

      本文标题:异步,多线程和并行的区别?

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