《并行计算的编程模型》一2.3.6 活动消息进程

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

2.3.6 活动消息进程

前文中讲到,GASNet能够使用内部线程或中断的方式运行AM处理程序。虽然我们重点关注客户端代码编写的正确性,但是大多数代码实现所缺乏的异步进程控制机制不能作为错误的典范。相反,典型的AM驱动的GASNet应用的进程依赖于客户端向GASNet发送的消息数目。尽管客户端能够保证AM初始化调用以轮询的方式处理进入的AM程序,但这远远不够。因此,有以下两种显式轮询方式:

gasnet_AMPoll函数对进入的AM(包括Request和Reply)进行检查,并在函数返回前执行其中的依赖最大数的函数实现部分。所以难以确保在函数返回时没有额外的AM等待时间。该函数通常在客户端自身的进程循环中执行,或在未知轮询时间的客户端操作前后使用。宏GASNET_BLOCKUNTIL用于阻塞操作直到判断条件为真。它将C表达式作为参数进行计算,且GASNet执行的代码在功能上等同于:

然而,GASNET_BLOCKUNTIL用于实现特定的控制机制而不是通用机制。需要注意的是,对于由于使用GASNET_BLOCKUNTIL的AM代码阻塞扩展API调用改变内存的行为,使用GASNET_BLOCKUNTIL是唯一能够阻塞中间等待时间的方法,且可以无限阻塞。

相关文章
|
9天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
3月前
|
存储 算法 Linux
【Linux系统编程】进程状态
【Linux系统编程】进程状态
|
3月前
|
Linux Shell 调度
【Linux系统编程】进程的认识
【Linux系统编程】进程的认识
|
3月前
|
Shell
在Shell编程中,进程替换
在Shell编程中,进程替换
64 3
|
1月前
|
消息中间件 Linux
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
22 2
|
1月前
|
存储 Linux 程序员
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
20 1
|
1月前
|
安全 程序员 数据处理
深入探索Python多进程编程:理论与实践
深入探索Python多进程编程:理论与实践
36 2
|
1月前
|
Python
Python实现多线程或多进程编程。
Python实现多线程或多进程编程。
17 0
|
2月前
火山中文编程 -- 创建进程
火山中文编程 -- 创建进程
12 0
|
2月前
|
安全 Windows 容器
win32编程 -- 进程
win32编程 -- 进程
18 0