系统问题需要下载

蓝咒 提交于 2020-04-02 20:24:40

并发的优点在操作系统单核的时候就体现了,最好的体现就是操作系统中线程的调度。而我们能做哪种并发,取决于操作系统能做哪种并发,没有人会以为自己写的程序真的能创建线程。

 

下面是个人的一些使用过得并发路子,由于接触有限只是用下面4种。

 

 

 

正文

1.多线程

 

采用多个线程来执行程序。在此指狭隘的多线程概念,比如说一个程序,执行不同类型的任务采用不同的线程,这些线程一直伴随着程序的生命周期。

 

2.并行处理

 

是多线程中的一种。把正在执行的大量任务分割成小块,分配给多个同时运行的程序。

 

下面是百度百科的概念:

 

并行处理(Parallel Processing)是计算机系统中能同时执行两个或多个处理的一种计算方法。并行处理可同时工作于同一程序的不同方面。并行处理的主要目的是节省大型和复杂问题的解决时间。

为使用并行处理,首先需要对程序进行并行化处理,也就是说将工作各部分分配到不同处理进程(线程)中。并行处理由于存在相互关联的问题,因此不能自动实现。另外,并行也不能保证加速。从理论上讲,在 n 个并行处理的执行速度可能会是在单一处理机上执行的速度的 n 倍。

狭隘的多线程解决不同类型的任何互不干预。而并行处理则是从任务的角度分割,切换成小而完整的任务,利用多线程去实行并行处理。

 

之所以会有这种模式,是因为我们会有大的任务,这会影响其他任务的执行,不可能把苹果都放在一个篮子里面。

 

3.异步编程

 

它采用future模式或者回调模式机制,以避免产生不必要的线程。

 

为什么会产生这种概念呢?是因为比如A线程,要等待B线程的结果才能继续运行,这就有很大的问题了。

 

一个线程运行到一半去请求B的数据,尴尬不?这不符合多线程的理想情况,理想情况是不干预啊。

 

以人的思维来说,一件事情A做到一半,要等待另外一件事情B完成。万一B干到一半出事了呢?那么A是不是尴尬了?

 

这样一想是不是一个尴尬的问题?对电脑来说,就更是了。

 

举一个例子:

 

我们知道js调用浏览器的api来实现对后台的访问的,我们打开一个网页一下子会请求很多数据,但是呢,即使网页加载到一半的时候我们可以操作网页,比如我们的点击操作,这一部分会调用js代码。

 

而且我们知道js是单线的,也就是说js掉完浏览器的api之后,并没有阻塞我们的js这条单线。但是当服务器返回的时候我们的页面又有数据了。这是因为浏览器当结果返回的时候,会调用我们的js方法。

 

这个js方法就是未来任务,也就是feature。

 

当然每个人的理解是不同的,如果有误望请指出。

 

响应式编程

百度百科上:

 

响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

说的非常笼统,这意味着什么呢?意味着这东西还没有具体化,概念还未具体化,没有实现其普遍性的价值。涉及到数据流的问题,在此就不好解释,后续慢慢展开。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!