[Info-vax] VMS process communication
Bob Gezelter
gezelter at rlgsc.com
Tue Sep 13 05:29:19 EDT 2022
On Monday, September 12, 2022 at 6:58:44 PM UTC-4, Arne Vajhøj wrote:
> I did a little writeup:
>
> https://www.vajhoej.dk/arne/articles/vmsipc.html
>
> Content:
>
> Introduction
> Shared Memory
> Concept
> Demo
> System Service (C, Fortran, Pascal)
> Memory Mapped File
> Concept
> Demo
> System Service (C, Fortran, Pascal)
> Writeable Shareable Image
> Concept
> Demo
> Linker/installer (Fortran, Pascal, C, Basic)
> TCP/IP Socket
> Concept
> Demo
> Java API (Java)
> C API (C)
> Python API (Python, Jython)
> Wrapper C API (Fortran, Pascal, Cobol, Basic)
> Message Queue
> Concept
> Demo
> JMS API (Java, Jython)
> STOMP C library (C)
> STOMP Python library (Python)
> Wrapper C STOMP library (Fortran, Pascal, Cobol, Basic)
> Index Sequential File
> Concept
> Demo
> Language builtin (Pascal, Cobol, Basic, Fortran)
> RMS API (C)
> VMS Python IndexedFile (Python)
> JVM ISAM library (Java, Jython)
> SQLite Database
> Concept
> Demo
> C API (C)
> Python API (Python, Jython)
> JDBC API (Java)
> JPA API (Java, Jython)
> Wrapper C API (Pascal)
>
> Arne
Arne,
My compliments. I know all too well how much effort it takes to produce such a compendium.
As has been observed, mailboxes are not included.
DECnet Task-to-Task would also make a useful addition. While DECnet does not include encryption, an omission that I have been quietly outraged by for decades, when tunneled over an encrypted IP tunnel OR used locally, it is quite useful. DECnet logical links are message-based, unlike stream-based TCP sockets, which does simplify programming to an extent.
Both network-based techniques have a significant synchronization advantage over shared memory techniques. When either partner of a TCP socket or a DECnet logical link exits, the corresponding partner is automatically notified, allowing the appropriate steps to be taken. Detecting a failed correspondent is far more complex with shared memory techniques. Network links are also atomic. A message is sent or not, there are no partial messages. Shared memory approaches have the inherent danger that an update may be incomplete, corrupting the shared data structure.
My normal recommendation has been to implement using message-passing techniques, unless one can conclusively demonstrate that the performance increment achieved by shared memory can be justified.
- Bob Gezelter, http://www.rlgsc.com
More information about the Info-vax
mailing list