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 <sched.h>
23
#include <string>
24
25
namespace
toolbox
{
26
inline
namespace
sys {
27
29
struct
ThreadConfig
{
30
ThreadConfig
(std::string
name
, std::string
affinity
= {},
// NOLINT(hicpp-explicit-conversions)
31
std::string
sched_policy
= {})
noexcept
32
:
name
{
std
::
move
(
name
)}
33
,
affinity
{
std
::
move
(
affinity
)}
34
,
sched_policy
{
std
::
move
(
sched_policy
)}
35
{
36
}
37
ThreadConfig
()
noexcept
=
default
;
38
~
ThreadConfig
()
noexcept
=
default
;
39
40
// Copy.
41
ThreadConfig
(
const
ThreadConfig
&) =
default
;
42
ThreadConfig
&
operator
=(
const
ThreadConfig
&) =
default
;
43
44
// Move.
45
ThreadConfig
(
ThreadConfig
&&)
noexcept
=
default
;
46
ThreadConfig
&
operator
=(
ThreadConfig
&&)
noexcept
=
default
;
47
49
std
::
string
name
;
51
std
::
string
affinity
;
53
std
::
string
sched_policy
;
54
};
55
64
TOOLBOX_API
cpu_set_t
parse_cpu_set
(
std
::string_view
s
)
noexcept
;
65
73
TOOLBOX_API
int
parse_sched_policy
(
std
::string_view
s
);
74
77
TOOLBOX_API
void
set_thread_attrs
(
const
ThreadConfig
&
config
);
78
79
}
// namespace sys
80
}
// namespace toolbox
81
82
#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:92
toolbox
Definition
Benchmark.cpp:26
toolbox::sys::ThreadConfig
ThreadConfig holds the thread attributes.
Definition
Thread.hpp:29
toolbox::sys::ThreadConfig::ThreadConfig
ThreadConfig(std::string name, std::string affinity={}, std::string sched_policy={}) noexcept
Definition
Thread.hpp:30
toolbox::sys::ThreadConfig::ThreadConfig
ThreadConfig() noexcept=default
toolbox::sys::ThreadConfig::sched_policy
std::string sched_policy
The thread's scheduling policy.
Definition
Thread.hpp:53
toolbox::sys::ThreadConfig::name
std::string name
The thread's name.
Definition
Thread.hpp:49
toolbox::sys::ThreadConfig::affinity
std::string affinity
The thread's affinity.
Definition
Thread.hpp:51
Generated by
1.9.8