RaftLib  0.3a
C++ Stream Processing Template Library
poolschedule.hpp
1 
25 #ifndef _POOLSSCHEDULE_HPP_
26 #define _POOLSSCHEDULE_HPP_ 1
27 #include <vector>
28 #include <thread>
29 #include <cstdint>
30 #include "schedule.hpp"
31 #include "kernelcontainer.hpp"
32 
33 class Map;
34 namespace raft{
35  class kernel;
36 }
37 
38 
39 class pool_schedule : public Schedule
40 {
41 public:
48  pool_schedule( Map &map );
49 
54  virtual ~pool_schedule();
55 
61  virtual void start();
62 
63 protected:
70  virtual bool scheduleKernel( raft::kernel *kernel );
71 
75  const decltype( std::thread::hardware_concurrency() ) n_threads;
79  std::vector< std::thread* > pool;
88  std::vector< std::uint8_t > status_flags;
89 
96  std::vector< raft::kernel* > kernel_map;
97 
98 private:
105  static void poolrun( KernelContainer *container,
106  volatile std::uint8_t &sched_done );
107 };
108 #endif /* END _POOLSSCHEDULE_HPP_ */
virtual bool scheduleKernel(raft::kernel *kernel)
Definition: poolschedule.cpp:63
virtual ~pool_schedule()
Definition: poolschedule.cpp:50
virtual void start()
Definition: poolschedule.cpp:71
STL namespace.
decltype(std::thread::hardware_concurrency()) const n_threads
Definition: poolschedule.hpp:75
std::vector< std::uint8_t > status_flags
Definition: poolschedule.hpp:88
pool_schedule(Map &map)
Definition: poolschedule.cpp:33
Definition: map.hpp:39
Definition: kernelcontainer.hpp:30
std::vector< std::thread * > pool
Definition: poolschedule.hpp:79
Definition: schedule.hpp:31
Definition: kernel.hpp:48
Definition: globalmap.cpp:3
std::vector< KernelContainer * > container
Definition: poolschedule.hpp:83
Definition: poolschedule.hpp:39
std::vector< raft::kernel * > kernel_map
Definition: poolschedule.hpp:96