'What is the zmq underlying transport on linux?
When ZeroMQ is used with inproc:// or ipc:// transport on linux, what exactly is the underlying implementation or operating system construct does it use ? Is it Unix Domain Sockets ? or (named) pipes ? anything else ?
Solution 1:[1]
The inproc:// Transport-class, where both Access-Points of the Scalable Formal Communication Pattern archetype are within the same process (address-space), there is no "underlying" transport needed at all. It uses just a zero-copy (pointer-based) memory-address pointing, instead of any byte-moving. This is why this Transport-class (if no other is used) does not even require having a Context()-instance (no engine, no high-level queuing buffers, we can imagine it to work just by passing pointers to a new message to the opposite side)
The ipc Transport-class uses UNIX domain sockets ( that is why it cannot be used on O/S-es, that do not provide UNIX domain sockets. Some bindings yet may circumvent this fact by emulating TCP-based proxy-transport and shuffle the "outer" ipc:-declared Transport-class services "under the hood" by such a proxy-transport locally available inside such O/S, if all of the counterparties "externally"-claimed to be using ipc: Transport-class do communicate using this same emulated-service trick )
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | user3666197 |
