RTI Connext .Net APIs
Version 5.0.0
|
The properties of a thread of execution. More...
Classes | |
class | DDS::ThreadSettings_t |
The properties of a thread of execution. More... | |
Enumerations | |
enum | DDS::ThreadSettingsKind : UINT32 |
A collection of flags used to configure threads of execution. More... | |
enum | DDS::ThreadSettingsCpuRotationKind : UINT32 |
Determines how DDS::ThreadSettings_t::cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads. More... | |
The properties of a thread of execution.
enum DDS::ThreadSettingsKind : UINT32 |
A collection of flags used to configure threads of execution.
Not all of these options may be relevant for all operating systems.
enum DDS::ThreadSettingsCpuRotationKind : UINT32 |
Determines how DDS::ThreadSettings_t::cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads.
Most thread-related QoS settings apply to a single thread (such as for the DDS::EventQosPolicy, DDS::DatabaseQosPolicy, and DDS::AsynchronousPublisherQosPolicy). However, the thread settings in the DDS::ReceiverPoolQosPolicy control every receive thread created. In this case, there are several schemes to map M threads to N processors; the rotation kind controls which scheme is used.
If DDS::ThreadSettings_t::cpu_list is empty, the rotation is irrelevant since no affinity adjustment will occur. Suppose instead that DDS::ThreadSettings_t::cpu_list = {0, 1} and that the middleware creates three receive threads: {A, B, C}. If DDS::ThreadSettings_t::cpu_rotation is ::DDS::ThreadSettingsCpuRotationKind::THREAD_SETTINGS_CPU_NO_ROTATION, threads A, B and C will have the same processor affinities (0-1), and the OS will control thread scheduling within this bound. It is common to denote CPU affinities as a bitmask, where set bits represent allowed processors to run on. This mask is printed in hex, so a CPU core affinity of 0-1 can be represented by the mask 0x3.
If DDS::ThreadSettings_t::cpu_rotation is ::DDS::ThreadSettingsCpuRotationKind::THREAD_SETTINGS_CPU_RR_ROTATION, each thread will be assigned in round-robin fashion to one of the processors in DDS::ThreadSettings_t::cpu_list; perhaps thread A to 0, B to 1, and C to 0. Note that the order in which internal middleware threads spawn is unspecified.
Not all of these options may be relevant for all operating systems.