文档章节

并行计算的一些概念

MarcoWu
 MarcoWu
发布于 2015/12/23 16:40
字数 834
阅读 15
收藏 0
点赞 0
评论 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 ⋅ 7

C#~异步编程再续~大叔所理解的并行编程(Task&Parallel)

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

mcy247 ⋅ 2017/12/05 ⋅ 0

C++数据处理框架--easyLambda

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

匿名 ⋅ 2016/03/16 ⋅ 0

一年走向【Java架构师】之葵花宝典

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

我一路狂奔 ⋅ 2017/05/20 ⋅ 1

程序员必看的十大电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如,大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之 酷,甚至反过来能帮助我们程序员更好的理...

oschina ⋅ 2013/10/25 ⋅ 101

Erlang/OTP 20.2 发布,动态类型编程语言

Erlang/OTP 20.2 发布发布了,Erlang 是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合于构建分布式,...

周其 ⋅ 2017/12/14 ⋅ 1

何为分布式计算

分布式计算是当前计算机领域常见的名词,那么到底什么事分布式,什么又是分布式计算呢?今天和大家共同研究一下这个话题。 定义 一个分布式系统是由若干通过网络互联的计算机组成的硬件系统,...

邵鸿鑫 ⋅ 2016/03/22 ⋅ 0

Groovy的并行处理框架--GPars

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

匿名 ⋅ 2010/05/20 ⋅ 0

并行计算开发了解

今天看了一些并行计算方面的资料,写一些收获吧,因为研究的并不深,也并不打算做专业解释,只是从一个程序员的角度,谈一些并行计算开发方面一些初步了解。 并行计算方面的开发库,直到今天...

hakuyo ⋅ 2017/08/03 ⋅ 0

函数式编程很难,这正是你要学的原因

很奇怪不是,很少有人每天都使用函数式编程语言。 如果你用Scala,Haskell,Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像 Python,Ruby,J...

凯奥斯 ⋅ 2012/10/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA RMI

什么是JAVA RMI Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Proced...

saulc ⋅ 27分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

linux-tao ⋅ 37分钟前 ⋅ 0

进入编辑模式 vim命令模式 vim实践

1.

oschina130111 ⋅ 37分钟前 ⋅ 0

mysql用户管理、常用sql语句、mysql数据库备份恢复

1. mysql用户管理 mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。 Mysql创建用户以及授权: grant all on...

laoba ⋅ 38分钟前 ⋅ 0

类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Obj...

流氓兔- ⋅ 44分钟前 ⋅ 0

JEPLUS表格组件之表格合并——JEPLUS软件快速开发平台

JEPLUS表格组件之表格合并 我们在列表配置时会遇见这样的一种情况,需要对个人的数据进行统一化,对一些数据进行归类,这样展示出来美观又直观,在这篇笔记中我来给大家介绍下如何配置出来专...

JEPLUS ⋅ 45分钟前 ⋅ 0

golang 并发中全局唯一操作

package main// go 携程共享 数据// 加锁解锁操作// 同步锁import ("sync""fmt")// 创建Once结构var once = sync.Once{}func computed(data *int, lock *sync.Mut...

304158 ⋅ 46分钟前 ⋅ 0

Mobx入门之二:asynchronous actions

这一节主要看mobx怎么实现asynchronous actions 1 要实现的demo功能 输入地名,查询天气,利用openweathermap api 2 思想 observable观察数据:location地点、temperature温度 observer响应式...

pengqinmm ⋅ 48分钟前 ⋅ 0

【2018.0620学习笔记】【linux高级知识 13.4-13.6】

13.4 mysql用户管理 创建用户并授权: grant all on *.* to '用户名'@'ip' identified by '密码' //all是操作权限,*.*是库.表,指定格式是'用户名'@'localhost'才能用socket登录本地 gra...

lgsxp ⋅ 今天 ⋅ 0

Java强弱引用示例

package jdk;import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public ......

月下狼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部