apl - Dyalog APL 中的并行 session

标签 apl dyalog

至少有一种单字母语言(当然是 q)具有用于进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程。这些 session 可以在同一台计算机上,也可以在不同大陆的服务器上。

使用 q,我只需启动一个服务器来监听特定端口,例如 q -p 8510,然后从另一个 q session 或其他软件访问它。非常简单。

我记得在很久以前,使用带有 Shared Variables 的大型机 APL 系统,我可以与另一个用户共享一个变量。这可能是 IBM APL.SV。当时我并没有想太多,但几十年后的今天,Shared Variables 听起来像是并行 session 的基础。与另一台计算机共享变量。

我今天怎么能或会用 Dyalog APL 或其他任何我可以做到的 APL 做到这一点

  • 在另一台物理计算机上调用 APL session

  • 向它发送命令或表达式

  • 收到结果

  • 可能在许多其他计算机上并行执行此操作

最佳答案

事实上,在 Microsoft Windows 下的 Dyalog APL 中仍然通过 DDE 协议(protocol)支持“老式”共享变量,但它们被视为已弃用。

Dyalog APL 的最新版本通过 isolates 支持并行或异步执行,它们是显示为事件工作区扩展的单独进程。在隔离中执行的任何表达式都会立即返回一个future。 future 可以作为参数传递给函数,并且可以由结构原语进行操作而不会阻塞;如果它们被传递给需要知道值的原始函数,它们将自动阻塞,直到结果的计算完成。

The documentation for futures and isolates is online ,并且有许多在线视频 - 例如,在 Dyalog'14 上介绍了这些视频。这里:

Video thumbnail
Parallel Programming with Dyalog 14.0 on YouTube

在 17.0 版中,我们将包括对 APLSSH 类的支持,这将使在远程机器上启动隔离变得简单。

最后,如果您想在已经运行的 APL 进程之间进行通信,TCP 库“Conga”(也包含在标准 Dyalog 安装中)允许您使用 TCP/IP 在进程之间传递 APL 数组,即使这些进程在不同的机器架构上运行。 Documentation for Conga is also online .

关于apl - Dyalog APL 中的并行 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805502/

相关文章:

version-control - 原始函数序列的 Dyalog SALT.Load 异常 "could not fix"

windows - Dyalog APL 语言栏丢失

apl - 如何屏蔽 APL 中的扫描运算符?

command-line-arguments - Dyalog APL : how to write standalone files that can be executed?

apl - APL-ASCII 音译方案是否已获得广泛采用?

function - 如何将 Dyalog APL 函数保存在文本文件中?

scripting - 在 APL 中声明多行函数的问题

arrays - 如何为 worker 座位安排生成 "Social Golfer"矩阵?

apl - 在 Dyalog 中创建闭包向量

formatting - 如何格式化数字向量和字符串向量? (Dyalog APL)