28#ifndef SRC_XRDEC_XRDECTHREADPOOL_HH_
29#define SRC_XRDEC_XRDECTHREADPOOL_HH_
47 template <
int I,
int ... Ns>
61 template <
typename FUNC,
typename TUPL,
int ... INDICES>
64 return func( std::move( std::get<INDICES>( args ) )... );
68 template <
typename FUNC,
typename ... ARGs>
71 return tuple_call_impl( func, tup,
typename seq_gen<
sizeof...(ARGs)>::type{} );
78 template<
typename FUNC,
typename RET,
typename ... ARGs>
94 template<
typename RETURN>
126 return prms.get_future();
159 template<
typename FUNC,
typename ... ARGs>
160 inline std::future<
typename std::result_of<FUNC(ARGs...)>::type>
163 using RET =
typename std::result_of<FUNC(ARGs...)>::type;
164 AnyJob<FUNC, RET, ARGs...> *job =
new AnyJob<FUNC, RET, ARGs...>( func, std::move( args )... );
A synchronized queue.
Definition XrdClJobManager.hh:51
bool Finalize()
Finalize the job manager, clear the queues.
bool Start()
Start the workers.
bool Initialize()
Initialize the job manager.
bool Stop()
Stop the workers.
void QueueJob(Job *job, void *arg=0)
Add a job to be run.
Definition XrdClJobManager.hh:92
Interface for a job to be run by the job manager.
Definition XrdClJobManager.hh:34
Definition XrdEcThreadPool.hh:80
std::future< RET > GetFuture()
Get the future result of the job.
Definition XrdEcThreadPool.hh:124
FUNC func
Definition XrdEcThreadPool.hh:131
std::promise< RET > prms
Definition XrdEcThreadPool.hh:133
static void RunImpl(FUNC func, std::tuple< ARGs... > &args, std::promise< void > &prms)
Definition XrdEcThreadPool.hh:84
void Run(void *arg)
Run the job.
Definition XrdEcThreadPool.hh:115
static void RunImpl(FUNC func, std::tuple< ARGs... > &args, std::promise< RETURN > &prms)
Definition XrdEcThreadPool.hh:95
std::tuple< ARGs... > args
Definition XrdEcThreadPool.hh:132
AnyJob(FUNC func, ARGs... args)
Definition XrdEcThreadPool.hh:107
Definition XrdEcThreadPool.hh:37
std::future< typename std::result_of< FUNC(ARGs...)>::type > Execute(FUNC func, ARGs... args)
Schedule a functional (together with its arguments) for execution.
Definition XrdEcThreadPool.hh:161
XrdCl::JobManager threadpool
Definition XrdEcThreadPool.hh:181
static ThreadPool & Instance()
Singleton access.
Definition XrdEcThreadPool.hh:150
static auto tuple_call(FUNC &func, std::tuple< ARGs... > &tup) -> decltype(tuple_call_impl(func, tup, typename seq_gen< sizeof...(ARGs)>::type{}))
Definition XrdEcThreadPool.hh:69
static auto tuple_call_impl(FUNC &func, TUPL &args, sequence< INDICES... >) -> decltype(func(std::move(std::get< INDICES >(args))...))
Definition XrdEcThreadPool.hh:62
~ThreadPool()
Destructor.
Definition XrdEcThreadPool.hh:141
ThreadPool()
Constructor.
Definition XrdEcThreadPool.hh:175
Definition XrdClZipArchive.hh:45
Definition XrdOucJson.hh:4517
typename seq_gen< I - 1, I - 1, Ns... >::type type
Definition XrdEcThreadPool.hh:50
Definition XrdEcThreadPool.hh:44
Definition XrdEcThreadPool.hh:41