The Gaudi Framework
master (bdbe7744)
Toggle main menu visibility
Loading...
Searching...
No Matches
FiberManager.h
Go to the documentation of this file.
1
2
/***********************************************************************************\
3
* (c) Copyright 1998-2026 CERN for the benefit of the LHCb and ATLAS collaborations *
4
* *
5
* This software is distributed under the terms of the Apache version 2 licence, *
6
* copied verbatim in the file "LICENSE". *
7
* *
8
* In applying this licence, CERN does not waive the privileges and immunities *
9
* granted to it by virtue of its status as an Intergovernmental Organization *
10
* or submit itself to any jurisdiction. *
11
\***********************************************************************************/
12
#pragma once
13
#include <boost/fiber/algo/shared_work.hpp>
14
#include <boost/fiber/condition_variable.hpp>
15
#include <boost/fiber/fiber.hpp>
16
#include <boost/fiber/mutex.hpp>
17
18
#include <thread>
31
32
class
FiberManager
{
33
34
public
:
46
FiberManager
(
int
n_threads );
47
~FiberManager
();
48
61
template
<
typename
F>
62
void
schedule
( F&& func ) {
63
// Add a new fiber invoking the function to the shared work queue, then notify the workers in case they where
64
// sleeping.
65
boost::fibers::fiber( boost::fibers::launch::post, std::forward<F>( func ) ).detach();
66
for
(
auto
* p :
m_schedAlgoList
) { p->notify(); }
67
}
68
69
private
:
70
using
SchedAlgo
= boost::fibers::algo::shared_work;
71
boost::fibers::condition_variable
m_shuttingDown_cv
{};
72
boost::fibers::mutex
m_shuttingDown_mtx
{};
73
std::vector<std::jthread>
m_threads
{};
74
std::vector<SchedAlgo*>
m_schedAlgoList
{};
75
};
FiberManager::m_shuttingDown_cv
boost::fibers::condition_variable m_shuttingDown_cv
Definition
FiberManager.h:71
FiberManager::SchedAlgo
boost::fibers::algo::shared_work SchedAlgo
Definition
FiberManager.h:70
FiberManager::schedule
void schedule(F &&func)
Schedule work to run on the asynchronous pool.
Definition
FiberManager.h:62
FiberManager::m_schedAlgoList
std::vector< SchedAlgo * > m_schedAlgoList
Definition
FiberManager.h:74
FiberManager::m_shuttingDown_mtx
boost::fibers::mutex m_shuttingDown_mtx
Definition
FiberManager.h:72
FiberManager::m_threads
std::vector< std::jthread > m_threads
Definition
FiberManager.h:73
FiberManager::FiberManager
FiberManager(int n_threads)
FiberManager constructor.
Definition
FiberManager.cpp:18
FiberManager::~FiberManager
~FiberManager()
Definition
FiberManager.cpp:49
GaudiHive
src
FiberManager.h
Generated on
for The Gaudi Framework by
1.17.0