RTI Connext C API
Version 5.0.0
|
The properties of a thread of execution. More...
Data Structures | |
struct | DDS_ThreadSettings_t |
The properties of a thread of execution. More... | |
Macros | |
#define | DDS_THREAD_SETTINGS_KIND_MASK_DEFAULT |
The mask of default thread options. | |
Typedefs | |
typedef DDS_UnsignedLong | DDS_ThreadSettingsKindMask |
A mask of which each bit is taken from DDS_ThreadSettingsKind. | |
Enumerations | |
enum | DDS_ThreadSettingsKind { DDS_THREAD_SETTINGS_FLOATING_POINT, DDS_THREAD_SETTINGS_STDIO, DDS_THREAD_SETTINGS_REALTIME_PRIORITY, DDS_THREAD_SETTINGS_PRIORITY_ENFORCE } |
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... | |
The properties of a thread of execution.
#define DDS_THREAD_SETTINGS_KIND_MASK_DEFAULT |
The mask of default thread options.
A mask of which each bit is taken from DDS_ThreadSettingsKind.
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.
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_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_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.