文档章节

并行计算的一些概念

MarcoWu
 MarcoWu
发布于 2015/12/23 16:40
字数 834
阅读 15
收藏 0

并行计算的一些概念

1.同步和异步

  • 同步:同步方法调用一旦开始,调用着必须等到方法调用返回后,才能继续后续行为。

  • 异步:异步调用更像一个消息传递,一旦开始,方法调用就会立刻返回,调用着就可以继续后续工作。

2.并发和并行

  • 并发:侧重于多个任务交替进行,类似于单核cpu的时间片切换。

  • 并行:真正意义上的“同时执行”。

3.临界区

  • 指一种公共资源或者共享数据。

4.阻塞和非阻塞

  • 阻塞:一个线程占用了临界区资源,那么其它线程就会挂起等待

  • 非阻塞:与阻塞相反,强调没有一个线程可以妨碍其它线程执行,所有线程都会尝试不断前行。

5.死锁、饥饿和活锁

  • 死锁:所有资源都无法同时拿到所需要的资源。

  • 饥饿:指某一个线程因为一些原因无法获得所需要的资源。

  • 活锁:资源不断在两个线程中跳动,而没有一个线程可以同时拿到所有资源而正常执行。

6.并发级别

  • 阻塞:一个线程阻塞的,那么在其它线程释放资源之前,当前线程无法继续执行。

  • 无饥饿:线程之间是有优先级的,线程调度的时候总是倾向于满足高优先级的线程。但如果锁是公平的,满足先来后到,那么饥饿就不会产生。

  • 无障碍:是一种最弱的非阻塞调度,不会因为临界区的问题导致一方被挂起。对于无障碍的线程一旦检测到数据在修改,为了防止把数据修改坏,会立即对自己所做的修改进行回滚,确保数据安全,如果没有数据竞争,那么就顺利完成自己工作,走出临界区。

  • 无锁:无锁都是无障碍的,区别在于无锁的并发保证必然有一个线程能够在有限步内完成离开临界区。

  • 无等待:无锁式要求有一个线程可以在有限步内完成,而无等待则是要求所有的线程都必须在有限步内完成。

7.关于并行的两条定律

8.Java内存模型(JMM)

  • 原子性:指一个操作不可中断,即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

  • 可见行:指一个线程修改了某一个变量的值,其他线程能否立刻知道这个修改。

  • 有序性:在并发时,程序执行可能会出现乱序。直观的表现为,写在前面的代码,会在后面执行。

出现这种情况的原因可能为指令重排,一个指令的执行主要有这么几步:
1.读取IF
2.译码和取寄存器操作数 ID
3.执行或者有效地址计算 EX
4.存储器访问 MEM
5.写回 WB
因为指令不会一次就执行完,所以就会出现乱序。

9.More... 


© 著作权归作者所有

共有 人打赏支持
MarcoWu
粉丝 0
博文 2
码字总数 2071
作品 0
徐汇
程序员
【更新】引入闭包的目的是什么?

提供匿名函数的实现方式 可将更多的逻辑封装在函数内 减少小函数的数量,代码更紧凑 没有减少代码编写量,没有对代码逻辑有明显的简化 新概念(相对于大多数coder),耍酷 ------------------...

深蓝苹果
2013/09/16
0
7
C#~异步编程再续~大叔所理解的并行编程(Task&Parallel)

并行这个概念出自.net4.5,它被封装在System.Threading.Tasks命名空间里,主要提供一些线程,异步的方法,或者说它是对之前Thread进行的二次封装,为的是让开发人员更方便的调用它,对于异步...

mcy247
2017/12/05
0
0
一年走向【Java架构师】之葵花宝典

大多数时候,不是我们不努力,而是不知从何下手,我深知一份好的学习资料是多么的重要,我们通常会把大量的时间都浪费在找资源上,本人搜集学习java架构师的经典学习路线如下可供参考!!! 一...

我一路狂奔
2017/05/20
395
1
Groovy的并行处理框架--GPars

随着并行计算在计算机上的广泛应用(自己用的本本都已经是双核的了),并行计算软件也逐步走向台前,GPars就为我们用Groovy编写并行程序提供了方便。 GPar( Apache 2 License),原名是 GP...

匿名
2010/05/20
4.8K
0
C++数据处理框架--easyLambda

easyLambda 是一个 C++ 的 MPI 和数据处理框架。该项目旨在满足使用 C++ 进行标准化的数据处理。设计的目标是可组合、易用接口、去耦合 I/O,算法逻辑无需关注数据格式和并行处理代码,减少样...

匿名
2016/03/16
2.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
5分钟前
0
0
Jenkins使用

clean install -Dmaven.test.skip=true

1713716445
15分钟前
0
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
0
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
今天
3
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部