《并行计算的编程模型》一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实现既不使用线程也不使用内部中断执行客户端处理程序时,不需要编译互斥调用。

相关文章
|
4月前
|
Linux API
硬件自旋锁框架 【ChatGPT】
硬件自旋锁框架 【ChatGPT】
|
8月前
|
存储
RTOS多线程操作的基本原理与实现
RTOS多线程操作的基本原理与实现
296 0
|
安全 Linux 内存技术
Linux驱动开发——并发和竞态(概念介绍①)
Linux驱动开发——并发和竞态(概念介绍①)
153 0
Linux驱动开发——并发和竞态(概念介绍①)
|
测试技术 调度 C语言
大并发下的高性能编程 – 改进的(用户态)自旋锁
前言 多线程程序中,锁的使用往往成为系统性能的关键。在做地址可视化项目的时候,由于内存管理部分需要频繁的更新内存的引用计数,所以产生了使用自旋锁的想法,这篇文章我们从自旋锁的性能开始说起,由浅入深的给出了一种改进的自旋锁的实现。
1774 0
|
SQL 开发框架 算法
C#多线程开发-任务并行库04
C#多线程开发-任务并行库04
153 0
C#多线程开发-任务并行库04
|
算法 调度
1_python高阶_线程—多任务(并发、并行)
1_python高阶_线程—多任务(并发、并行)
268 0
|
Java 异构计算
Java并发编程之概念一:并行与并发
Java并发编程之概念一:并行与并发概念解释并行性和并发性是既相似又有区别的两个概念。 并行性是指两个或多个事件在同一时刻发生。 而并发性是指连个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机环境下(一个处理器),每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
2373 0
|
并行计算 程序员
《并行计算的编程模型》一3.6.3 锁
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.6.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
933 0
|
并行计算
《并行计算的编程模型》一2.3.3 屏障
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1084 0
|
并行计算
《并行计算的编程模型》一2.2.2 线程
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.2.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
897 0