Multi-process and multi-thread design

The thread is a single strand that runs within a process, and is the basis for the configuration and monitoring abilities. The engine’s ICL, Interthread Communications Library, maximizes thread communication, even across interprocess messaging or multiple process messaging. Intraprocess messaging, or single process messaging, takes advantage of a shared address space between threads in the same process, and runs faster.

Because intraprocess messaging shares the same process, it does not require data copying or a system request to deliver a message. It is often the fastest type of messaging available.

The engine is designed with three types of threads, each with a specific function:

  • The protocol thread sends and receives protocol messages on a connection. It manages protocol connections to remote systems. This thread reads and writes data to and from devices, such as, TCP/IP sockets, files, and SNA connections. All protocol threads are bi-directional. There is no limit to the number of protocol threads that can be defined within a process.
  • The translation thread translates messages between several formats, and sends them to the protocol thread controlling the destination connection. There is only one translation thread per process. This thread transforms messages from the format of the sending system to the format of the receiving system.
  • The command thread determines which protocol or translation thread has work to do, and schedules threads to run. This thread controls all other threads within a process, moving messages from thread to thread. There is only one command thread per process.