美文网首页iOS-OC初级
单核,多核,单线程,多线程,同步,异步的理论概念

单核,多核,单线程,多线程,同步,异步的理论概念

作者: iStig | 来源:发表于2015-09-16 14:18 被阅读413次

单核
多核
单线程
多线程
同步
异步
原子操作
非原子操作
并发
串行
分布式计算
阻塞
非阻塞

1、首先明确一点,对于单核CPU,任意一个时刻只有一个线程在运行。那么既然这样,多线程还有什么意义呢? 举例来说,现在只有一个人,要做好几个任务。单线程就是,任务一个一个地做,必须做完一个任务后,再去做另一个任务。多线程就是一会做这个任务,一会做那个任务,每个任务做一会,不停的切换。显然,最后把所有的任务做完,多线程必定比单线程更耗费时间。为什么?因为,多线程要在不同的任务之间切换,切换肯定是要耗费时间的。那么问题来了,既然多线程比单线程更耗费时间,为什么还要多线程? 单线程有一个致命的问题,就是一个线程运行的整个过程中,其他线程必须等待,不能响应用户的命令,用户体验太差,好像电脑死机一样。假如单线程,你能想象一下,用户在听歌的时候不能写文档,这种体验也太差了。多线程的时候,单核CPU一会做这个任务,一会做那个任务,切换的时间是毫秒级的,用户完全感觉不出来。从而给用户照成错觉,感觉这些任务并行的运行。
2、同步的使用场景:多个线程同时访问一块数据,也叫共享区。对于多个线程同时访问一块数据的时候,必须使用同步,否则可能会出现不安全的情况。比如数据库中的脏读。但是,多个线程同时访问一块数据,有一种情况不需要同步技术,那就是原子操作,也就是说操作系统在底层保证了操作要么全部做完,要么不做。
3、异步的使用场景:只有一个线程访问当前的数据。比如,观察者模式,没有共享区,主题发生变化,通知观察者更新,主题继续做自己的事情,不需要等待观察者更新完成后再工作。

JavaScript 运行机制详解:再谈Event Loop
javascript事件轮询(event loop)详解
什么是 Event Loop?

相关文章

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

  • 单核,多核,单线程,多线程,同步,异步的理论概念

    单核多核单线程多线程同步异步原子操作非原子操作并发串行分布式计算阻塞非阻塞 1、首先明确一点,对于单核CPU,任意...

  • java并发编程(一)

    并发编程比较重要的概念有哪些? 一:什么是单核多线程和多核多线程? 1:单核多线程指的是单核CPU轮流执行多个线程...

  • 单核和多核,单进程和多进程,单线程与多线程

    之前我对单进程、多进程、单线程、多线程,单核、多核、并发、并行;总是没有详细的认知;因此准备归纳总结下,加强自己的...

  • go 的并发机制

    并发与并行的概念 ① 多线程程序在单核cpu上运行就是并发;② 多线程程序在多核cpu上运行就是并行; gorou...

  • 同步和异步

    同步概念 由于JavaScript是单线程的,在浏览器里代码按顺序执行,这就是同步。 异步概念 异步的来源:Jav...

  • 关于多线程的思考

    多线程的意义 充分的利用多核机器性能,如果在单核系统上运行,多线程只是利用时间片的概念实现的假多线程。 防止阻塞 ...

  • 深入浅出node-异步IO

    node在多线程和单线程之间的选择: 利用单线程,原理多线程的死锁、状态同步等问题;利用异步IO,让线程原理阻塞,...

  • 单核&多核,进程&线程,串行&并行,同步&异步

    先了解一些基本概念: 单核&多核:一个处理器(CPU)有几个运算核心,来区别是单核还是多核。单核和多核的本质区别就...

  • Node进程

    Nodejs是单线程的,单线程好处是程序状态是单一的,没有多线程情况下没有锁、线程同步的问题,但是CPU是多核的,...

网友评论

    本文标题:单核,多核,单线程,多线程,同步,异步的理论概念

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