C++ Based OPC UA Client/Server/PubSub SDK
Multiplexing of Service Calls

The following section describes the asynchronous handling and multiplexing of Service calls

The OPC UA Ansi C Stack supports two types of APIs for the Service invocation from the Stack into the Server application. There is a synchronous and an asynchronous API available. This SDK is using the asynchronous API for the following reasons.

UA Message Exchange is Asynchronous

The message exchange for OPC UA (request message and response message) is asynchronous. It is more efficient to initiate the actions in the server based on the request and allow the UA stack to handle additional messages without consuming too many threads. The server application can optimize the execution of the actions started by the request message and send a response message when the actions are finished.


The asynchronous handling allows the Server SDK to multiplex operations like read or write to several different data sources and to return after initiating the multiplexing. There is no blocking of the thread necessary to wait for the results like in the synchronous case. After all multiplexed operations are finished, the Server SDK can send the response with the result data from a worker thread.

All Services that can potentially access several data sources in one call like Read, Write, HistoryRead, Call or MonitoredItem related services are multiplexed and are using also asynchronous interfaces to the vendor specific implementations.