Classes | |
class | DDS::ThreadSettings_t |
The properties of a thread of execution. More... | |
Enumerations | |
enum | DDS::ThreadSettingsKind { DDS::THREAD_SETTINGS_FLOATING_POINT, DDS::THREAD_SETTINGS_STDIO, DDS::THREAD_SETTINGS_REALTIME_PRIORITY, DDS::THREAD_SETTINGS_PRIORITY_ENFORCE , DDS::THREAD_SETTINGS_KIND_MASK_DEFAULT } |
A collection of flags used to configure threads of execution. More... | |
enum | DDS::ThreadSettingsCpuRotationKind { DDS::THREAD_SETTINGS_CPU_NO_ROTATION, DDS::THREAD_SETTINGS_CPU_RR_ROTATION } |
Determines how DDS::ThreadSettings_t::cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads. More... |
A collection of flags used to configure threads of execution.
Not all of these options may be relevant for all operating systems.
Determines how DDS::ThreadSettings_t::cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads.
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.