《并行计算的编程模型》一2.3.4 锁与中断

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.4节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3.4 锁与中断

在2.2.2节中,讲到GASNet可以在客户端并行执行AM处理程序,即使客户端是单线程的。而且多线程客户端在执行过程中需要避免并行调用GASNet的屏障函数。因此本节将重点介绍GASNet的控制并发机制。
GASNet提供了专门的接口处理线程安全性,由于存在多线程执行GASNet的可能,这种接口对于单线程客户端非常重要。其中主要的机制是一个简单的互斥锁,称作“处理程序安全锁”或“HSL”,数据类型为基于互斥锁类型的gasnet_hsl_t类型。目的是为了确保该互斥锁类型适合于给定的程序实现(其中包括GASNet客户端与其实现都为单线程时无操作的情况)。

除了GASNet规范中提及的细节描述外,上述函数与pthread_mutex_t中的常量、函数非常相似。同POSIX线程一样,这些操作能够防止对数据结构或代码进行并行访问。关于互斥锁的使用方法不在本章讨论的范围之内。需要注意的是,上述操作为节点本地的互斥锁,且GASNet没有提供跨节点互斥处理机制。但是2.6.5节的示例将会讲到如何使用AM实现一个著名的互斥共享内存算法。
除前文中介绍的用于执行客户端AM处理程序的内部线程方法之外,GASNet规范允许出现中断驱动实现情况。虽然写本书时尚未出现这样的应用实现,但是这里简要地介绍一下相关概念。

上述的两个函数通常成对使用,它们定义了线程上不能被AM处理程序执行过程中断的代码段。这与使用HSL方式避免多线程并行访问给定代码或数据有较大的不同。无中断部分主要用于保护可能由客户端处理程序和非处理程序访问的非重入客户端代码。无中断部分使用较少有两个主要原因:(1)使得HSL能够隐式访问无中断部分;(2)AM处理程序在隐式无中断部分执行。注意如果存在动态循环嵌套操作,那么上述函数不必嵌套,因此客户端主要负责无中断部分。
在使用GASNET_SEQ构建时,当且仅当GASNet实现既不使用线程也不使用内部中断执行客户端处理程序时,不需要编译互斥调用。

相关文章
|
2月前
|
机器学习/深度学习 Java 数据挖掘
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
|
4月前
|
缓存 编译器 程序员
C/C++编译器并行优化技术:并行优化针对多核处理器和多线程环境进行优化,以提高程序的并行度
C/C++编译器并行优化技术:并行优化针对多核处理器和多线程环境进行优化,以提高程序的并行度
471 0
|
4月前
|
存储
RTOS多线程操作的基本原理与实现
RTOS多线程操作的基本原理与实现
190 0
|
10月前
|
安全 前端开发 程序员
C++11 并发编程基础(一):并发、并行与C++多线程
C++11标准在标准库中为多线程提供了组件,这意味着使用C++编写与平台无关的多线程程序成为可能,而C++程序的可移植性也得到了有力的保证。另外,并发编程可提高应用的性能,这对对性能锱铢必较的C++程序员来说是值得关注的。
146 0
C++11 并发编程基础(一):并发、并行与C++多线程
|
设计模式 算法 安全
并发设计模式 之 CAS算法
并发设计模式 之 CAS算法
175 0
|
Linux
Linux驱动开发——并发和竞态(中断屏蔽方式的使用②)
Linux驱动开发——并发和竞态(中断屏蔽方式的使用②)
135 0
Linux驱动开发——并发和竞态(中断屏蔽方式的使用②)
|
算法 调度
1_python高阶_线程—多任务(并发、并行)
1_python高阶_线程—多任务(并发、并行)
232 0
|
Java 异构计算
Java并发编程之概念一:并行与并发
Java并发编程之概念一:并行与并发概念解释并行性和并发性是既相似又有区别的两个概念。 并行性是指两个或多个事件在同一时刻发生。 而并发性是指连个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机环境下(一个处理器),每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
2326 0
|
Java API
Java并发编程基础-理解中断
章节 什么是中断 中断线程的方法 线程中断状态的判断以及何时被中断的线程所处 isInterrupted() 状态为 false? 1.什么是中断 线程标识位 中断可以理解为线程的一个标识位属性,它标识一个运行中的线程是否被其他线程进行了中断操作。
781 0
|
并行计算 程序员
《并行计算的编程模型》一3.6.3 锁
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.6.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
913 0