至少有一种单字母语言(当然是 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 上介绍了这些视频。这里:
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/