OnixS C++ FIX Engine 4.13.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 <OnixS/FIXEngine/ABI.h>
24
25#include <set>
26#include <string>
27
28namespace OnixS {
29namespace Threading {
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:
56
57 // The copying and assignment are prohibited.
59 ThreadAffinity & operator = (const ThreadAffinity &);
60
61 CpuIndexes * indexes_;
62};
63
65class ONIXS_FIXENGINE_API ThisThread
66{
67public:
70 static void sleep(unsigned int milliseconds);
71
73 static void spinWait(int microseconds);
74
76 static void affinity(const CpuIndexes & cpuIndexes);
77
79 static void affinity(CpuIndex cpuIndex);
80
82 static void priority(int priority);
83
88 static void policy(int policy);
89
91 static ThreadId id();
92
93private:
94 // No instances of the current thread are available.
95 ThisThread(const ThisThread &);
96 ThisThread & operator = (const ThisThread &);
97};
98
102{
103public:
104
106 explicit Thread(const std::string & name);
107
111 virtual ~Thread();
112
117 void start();
118
120 void stopAsync();
121
124 bool stopRequested() const;
125
127 void join() const;
128
130 ThreadId id() const;
131
132private:
133
135 virtual void run() = 0;
136
138 struct Impl;
139 Impl * impl_;
140
142 Thread(const Thread &);
143 Thread & operator = (const Thread &);
144};
145
146}
147}
#define ONIXS_FIXENGINE_API
Definition ABI.h:45
static void spinWait(int microseconds)
Executes a singular instruction during the given number of microseconds.
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.
static void affinity(CpuIndex cpuIndex)
Sets the processor affinity mask for the current thread.
static void policy(int policy)
Sets the scheduling policy for the current thread.
static ThreadId id()
Gets the platform identifier for the current thread.
static void sleep(unsigned int milliseconds)
Suspends the execution of the current thread for a given amount of time in milliseconds.
CpuIndexes & cpuIndexes()
The collection of CPU indices.
~ThreadAffinity()
Destructs the instance.
const CpuIndexes & cpuIndexes() const
The read-only access to the index collection.
std::string toString()
Serializes the thread affinity to the string presentation.
ThreadAffinity(const std::string &str)
Constructs the thread affinity from the string presentation.
void join() const
Joins the thread completion.
virtual ~Thread()
Cleans up internal resources.
void start()
Creates and runs an actual thread.
bool stopRequested() const
Returns 'true' if a stop signal is sent to the thread by the stopAsync method or in a different way,...
ThreadId id() const
Returns the platform identifier.
void stopAsync()
Sends a stop signal to the thread.
Thread(const std::string &name)
Creates the Thread object without running a real thread.
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:51