Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
sys
Thread.hpp
Go to the documentation of this file.
1
// The Reactive C++ Toolbox.
2
// Copyright (C) 2013-2019 Swirly Cloud Limited
3
// Copyright (C) 2021 Reactive Markets Limited
4
//
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing, software
12
// distributed under the License is distributed on an "AS IS" BASIS,
13
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
// See the License for the specific language governing permissions and
15
// limitations under the License.
16
17
#ifndef TOOLBOX_SYS_THREAD_HPP
18
#define TOOLBOX_SYS_THREAD_HPP
19
20
#include <
toolbox/Config.h
>
21
22
#include <functional>
23
#include <sched.h>
24
#include <string>
25
26
namespace
toolbox
{
27
inline
namespace
sys {
28
30
struct
ThreadConfig
{
31
ThreadConfig
(
32
std::string
name
, std::string
affinity
= {}, std::string
sched_policy
= {},
33
std::function<
void
()>
init_fn
= []() {})
noexcept
34
:
name
{
std
::
move
(
name
)}
35
,
affinity
{
std
::
move
(
affinity
)}
36
,
sched_policy
{
std
::
move
(
sched_policy
)}
37
,
init_fn
{
std
::
move
(
init_fn
)}
38
{
39
}
40
ThreadConfig
()
noexcept
=
default
;
41
~
ThreadConfig
()
noexcept
=
default
;
42
43
// Copy.
44
ThreadConfig
(
const
ThreadConfig
&) =
default
;
45
ThreadConfig
&
operator
=(
const
ThreadConfig
&) =
default
;
46
47
// Move.
48
ThreadConfig
(
ThreadConfig
&&)
noexcept
=
default
;
49
ThreadConfig
&
operator
=(
ThreadConfig
&&)
noexcept
=
default
;
50
52
std
::
string
name
;
54
std
::
string
affinity
;
56
std
::
string
sched_policy
;
58
std
::
function
<
void
()>
init_fn
;
59
};
60
69
TOOLBOX_API
cpu_set_t
parse_cpu_set
(
std
::string_view
s
)
noexcept
;
70
78
TOOLBOX_API
int
parse_sched_policy
(
std
::string_view
s
);
79
82
TOOLBOX_API
void
set_thread_attrs
(
const
ThreadConfig
&
config
);
83
84
}
// namespace sys
85
}
// namespace toolbox
86
87
#endif
// TOOLBOX_SYS_THREAD_HPP
Config.h
TOOLBOX_API
#define TOOLBOX_API
Definition
Config.h:39
std
STL namespace.
toolbox::sys::set_thread_attrs
void set_thread_attrs(const ThreadConfig &config)
Definition
Thread.cpp:70
toolbox::sys::parse_sched_policy
int parse_sched_policy(string_view s)
Definition
Thread.cpp:51
toolbox::sys::parse_cpu_set
cpu_set_t parse_cpu_set(string_view s) noexcept
Definition
Thread.cpp:35
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:97
toolbox
Definition
Benchmark.cpp:27
toolbox::sys::ThreadConfig
ThreadConfig holds the thread attributes.
Definition
Thread.hpp:30
toolbox::sys::ThreadConfig::ThreadConfig
ThreadConfig() noexcept=default
toolbox::sys::ThreadConfig::ThreadConfig
ThreadConfig(std::string name, std::string affinity={}, std::string sched_policy={}, std::function< void()> init_fn=[]() {}) noexcept
Definition
Thread.hpp:31
toolbox::sys::ThreadConfig::sched_policy
std::string sched_policy
The thread's scheduling policy.
Definition
Thread.hpp:56
toolbox::sys::ThreadConfig::init_fn
std::function< void()> init_fn
Other custom attributes/configuration set via function.
Definition
Thread.hpp:58
toolbox::sys::ThreadConfig::name
std::string name
The thread's name.
Definition
Thread.hpp:52
toolbox::sys::ThreadConfig::affinity
std::string affinity
The thread's affinity.
Definition
Thread.hpp:54
Generated by
1.9.8