同步和异步、单线程和多线程

之前一直混淆同步和单线程之间的概念今就这几个概念谈一下自己的理解

1、同步(Sync)

先说一下概念:所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。

我理解是:同步就是1对1的关系,就是我发出了请求,在我没有的到相应的同时,我要一直等待,需要响应的一方也不可以做别的事情只能一直去给请求方作出响应,即请求方在没有的到响应的时候不再发请求让响应方去做另一件事情,同一时间就做一件事情。

简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。

例如:B/S模式中的表单提交,具体过程是:客户端提交请求->等待服务器处理->处理完毕返回,在这个过程中客户端(浏览器)不能做其他事。

2、异步(Async)

基础概念:所谓异步,就是发出一个功能调用时,在没有得到结果之前,可以继续执行后续操作,不需要等待结果。

我的理解是:异步就是我在得到响应之前可以做很多的事情,我不需要在乎响应返回的顺序,在发出一个请求后,虽然我没有的到结果,但是为了充分利用时间和更好的体验,我可以在做别的事情,只要有返回结果我就返回,之前没有得到的返回结果吧如果一旦有了响应通知我我再去拿。

下面就是通知去哪消息的三种方法:

状态:即监听被调用者的状态(轮询),调用者需要每隔一定时间检查一次,效率会很低。

通知:当被调用者执行完成后,发出通知告知调用者,无需消耗太多性能。

回调:与通知类似,当被调用者执行完成后,会调用调用者提供的回调函数。

同步和异步的区别:请求发出后,是否需要等待结果,才能继续执行其他操作。

3、单线程

在了解线程之前,我们先要了解一下进程及进程和线程之间的关系

进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。
而一个进程又是由多个线程所组成的。我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例

线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,
即不同的线程可以执行同样的函数。最小的执行单元

线程

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

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

单线程:

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

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

多线程:

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

一个组线程,其他的为子线程

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

单线程、多线程的区别

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

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

 

 

你可能感兴趣的:(前端)