The Enterprise Message API is designed to allow calls from multiple threads, such that applications can scale their work across multiple cores by creating multiple threads to handle multiple connections through the Enterprise Message API.
EmaCppIProvPerf always creates at least one working thread. You can configure EmaCppIProvPerf for multiple threads by using the -threads command-line option. When multiple threads are configured, consumer connections are balanced such that each thread receives an equal number of connections. Note that one consumer establishes one connection.
The application working thread leverages an Enterprise Message API provider that is configured as an interactive provider. The provider is implemented by the VA Reactor and runs the internal, VA Reactor logic. Additionally, EmaCppIProvPerf configures the Enterprise Message API to create a second, internal thread to dispatch received messages. You can configure EmaCppIProvPerf to not run the second thread inside the Enterprise Message API by using -useUserDispatch command-line option.
The main application thread monitors the other application level’s threads, collects and reports statistics from them.