博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux---并行Parallel 并发 串行 同步 异步
阅读量:3919 次
发布时间:2019-05-23

本文共 1233 字,大约阅读时间需要 4 分钟。

并发编程又叫多线程编程

在程序中,往往有很多很耗时的工作,比如上传文件、下载文件、跟客户聊天需要长时间建立连接。这种时候,一个线程是服务不了多个用户的,会产生因为资源独占产生的等待问题。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间的多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率(买票问题并发进行)。

    并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。

并行Parallel:同时处理多个任务的能力。(微观上同时发生—多CPU同时处理各自线程)

并行的效率从代码层次上强依赖于多进程/多线程代码,从硬件角度上则依赖于多核CPU。

在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。(hadoop集群就是并行计算的)

    当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

并发:(宏观概念)处理多个任务的能力(宏观上同时进行,一个或者多个CPU在若干道程序之间多路复用)

任务间进程调度、上下文切换的很快👉形成多任务同时进行的假象

并发性是对有限物理资源强制行使多用户共享以提高效率。

并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。

并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

并发:

在这里插入图片描述
并行:
在这里插入图片描述

串行:一个任务完成后开始下一个任务(任务完成后才切换)

同步和异步:能否开启新的线程。同步不能开启新的线程,异步可以。

1、同步

同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

2、异步:多个任务并行的前提条件

异步是最终目的,多线程只是我们实现异步的一种手段。

异步:当运行到缺少数据(比如等待对方提交/反馈数据or数据没有就绪)而无法继续时,可以转而去做其他的事(线程)。

实现异步可以采用多线程技术或则交给另外的进程来处理。

转载地址:http://sbhrn.baihongyu.com/

你可能感兴趣的文章
Leetcode 4. 寻找两个正序数组的中位数
查看>>
Leetcode 101. 对称二叉树
查看>>
Leetcode 108. 将有序数组转换为二叉搜索树
查看>>
Leetcode 303. 区域和检索 - 数组不可变
查看>>
Leetcode 110. 平衡二叉树
查看>>
Leetcode 111. 二叉树的最小深度
查看>>
Leetcode 226. 翻转二叉树
查看>>
Leetcode 617. 合并二叉树
查看>>
Leetcode 654. 最大二叉树
查看>>
Leetcode 304. 二维区域和检索 - 矩阵不可变
查看>>
Leetcode 45. 跳跃游戏 II
查看>>
模式2. 工厂方法模式-Java
查看>>
模式1. 简单工厂模式-Java
查看>>
模式6.原型模式-Java
查看>>
Leetcode 146. LRU 缓存机制
查看>>
Leetcode 208. 实现 Trie (前缀树)
查看>>
Leetcode 1114. 按序打印
查看>>
kill -15、kill -9 与 kill
查看>>
剑指offer03 . 数组中重复的数字
查看>>
剑指 Offer 04. 二维数组中的查找
查看>>