OnixS C++ ICE Binary Order Entry Handler 1.0.0
API Documentation
Loading...
Searching...
No Matches
Thread.h
Go to the documentation of this file.
1/*
2* Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3*
4* This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5* and international copyright treaties.
6*
7* Access to and use of the software is governed by the terms of the applicable OnixS Software
8* Services Agreement (the Agreement) and Customer end user license agreements granting
9* a non-assignable, non-transferable and non-exclusive license to use the software
10* for it's own data processing purposes under the terms defined in the Agreement.
11*
12* Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13* of this source code or associated reference material to any other location for further reproduction
14* or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15*
16* Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17* the terms of the Agreement is a violation of copyright law.
18*/
19
20#pragma once
21
22#include <set>
23
24#include <OnixS/ICE/BOE/ABI.h>
26
28namespace Threading {
29
31typedef size_t CpuIndex;
32typedef std::set < CpuIndex > CpuIndexes;
33
36{
37public:
38
41 explicit ThreadAffinity(const std::string & str);
42
45
47 const CpuIndexes & cpuIndexes() const;
48
51
53 std::string toString();
54
55private:
57 ThreadAffinity & operator = (const ThreadAffinity &);
58
59 CpuIndexes * indexes_;
60};
61
63class ONIXS_ICEBOE_EXPORTED ThisThread
64{
65public:
68 static void sleep(size_t milliseconds);
69
71 static void spinWait(size_t microseconds);
72
74 static void affinity(const CpuIndexes & cpuIndexes);
75
77 static void affinity(CpuIndex cpuIndex);
78
80 static void priority(int priority);
81
86 static void policy(int policy);
87
89 static ThreadId id();
90
92 static unsigned int processorNumber();
93
94private:
95 ThisThread(const ThisThread &);
96 ThisThread & operator = (const ThisThread &);
97};
98
99}
#define ONIXS_ICEBOE_NAMESPACE_BEGIN
Definition ABI.h:94
#define ONIXS_ICEBOE_NAMESPACE_END
Definition ABI.h:98
#define ONIXS_ICEBOE_EXPORTED
Definition Compiler.h:153
static void priority(int priority)
Sets the priority for the current thread.
static void affinity(const CpuIndexes &cpuIndexes)
Sets the processor affinity mask for the current thread. The thread is rescheduled after this call.
static void spinWait(size_t microseconds)
Executes a single instruction during the given number of microseconds.
static void affinity(CpuIndex cpuIndex)
Sets the processor affinity mask for the current thread. The thread is rescheduled after this call.
static void policy(int policy)
Sets the scheduling policy for the current thread.
static void sleep(size_t milliseconds)
Suspends the execution of the current thread for the given amount of time.
static unsigned int processorNumber()
CpuIndexes & cpuIndexes()
Collection of CPU indices.
~ThreadAffinity()
Destructs the instance.
const CpuIndexes & cpuIndexes() const
Read-only access to index collection.
std::string toString()
Serializes thread affinity to the string presentation.
ThreadAffinity(const std::string &str)
Constructs thread affinity from the string presentation.
size_t CpuIndex
Logical processors that a thread is allowed to run on (first logical CPU has index 0).
Definition Thread.h:31
std::set< CpuIndex > CpuIndexes
Definition Thread.h:32
pthread_t ThreadId
Type alias for thread identifier.
Definition Definitions.h:32