Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
kcenon::thread::detail::job_eraser Class Reference

Type erasure helper for heterogeneous job storage. More...

#include <template_helpers.h>

Collaboration diagram for kcenon::thread::detail::job_eraser:
Collaboration graph

Classes

struct  vtable_t
 

Public Member Functions

template<typename Job >
 job_eraser (Job &&job)
 
void execute ()
 
void destroy ()
 

Private Attributes

const vtable_tvtable_
 
char storage_ [64]
 

Static Private Attributes

template<typename Job >
static constexpr vtable_t vtable_for
 

Detailed Description

Type erasure helper for heterogeneous job storage.

Definition at line 190 of file template_helpers.h.

Constructor & Destructor Documentation

◆ job_eraser()

template<typename Job >
kcenon::thread::detail::job_eraser::job_eraser ( Job && job)
inline

Definition at line 193 of file template_helpers.h.

194 : vtable_(&vtable_for<std::decay_t<Job>>)
195 , storage_(std::forward<Job>(job)) {}
static constexpr vtable_t vtable_for

Member Function Documentation

◆ destroy()

void kcenon::thread::detail::job_eraser::destroy ( )
inline

◆ execute()

void kcenon::thread::detail::job_eraser::execute ( )
inline

Member Data Documentation

◆ storage_

char kcenon::thread::detail::job_eraser::storage_[64]
private

Definition at line 218 of file template_helpers.h.

Referenced by destroy(), and execute().

◆ vtable_

const vtable_t* kcenon::thread::detail::job_eraser::vtable_
private

Definition at line 217 of file template_helpers.h.

Referenced by destroy(), and execute().

◆ vtable_for

template<typename Job >
vtable_t kcenon::thread::detail::job_eraser::vtable_for
staticconstexprprivate
Initial value:
= {
[](void* ptr) { static_cast<Job*>(ptr)->do_work(); },
[](void* ptr) { static_cast<Job*>(ptr)->~Job(); }
}

Definition at line 212 of file template_helpers.h.

212 {
213 [](void* ptr) { static_cast<Job*>(ptr)->do_work(); },
214 [](void* ptr) { static_cast<Job*>(ptr)->~Job(); }
215 };

The documentation for this class was generated from the following file: