If I have two processes that are running on the same box and they use DDS to communicate, will DDS use the OS-specific IPC services to enable this communication or will it use the TCP/IP stack as if the processes were running on different boxes?
Also, if I have one process with two DDS communicating threads running within it, will DDS utilize some OS-specific inter-thread comm transport (like queues, mailboxes)?
This depends on the DDS implementation. The DDS specification only specifies an API interface with its according behaviour, but does not address the protocol used by the implementation to exchange messages over transports such as TCP/UDP/IP.
PrismTech's OpenSplice DDS utilizes a shared-memory segment on a node so that data needs to be present only once, even when there are many applications running on the node that are interested in that data. Smart administration secures a ‘private’ cache as observed by each reader/writer but physically the data itself is present only once. This means that data doesn’t have to be ‘moved’ within a node resulting in excellent performance and scalability.
Thanks for the answer - it makes sense. In terms of server OS's like Linux/Solaris/Windows I understand the shared memory implementation. How about sibgle memory space RTOS's like VxWorks? Does the OpenSplice DDS implementation use VxWorks queues/mailboxes to communicate topic instances?