38 template<
class Fn,
class ... Args>
39 bool Submit(Fn&& fn, Args&& ... args)
41 std::function<void()> callable{ std::bind(std::forward<Fn>(fn), std::forward<Args>(args)...) };
42 return SubmitToThread(std::move(callable));
46 bool Submit(std::function<
void()>&& callable)
48 return SubmitToThread(std::move(callable));
70 Free, Locked, Shutdown
107 std::mutex m_queueLock;
116 std::function<void()>* PopTask();
Aws::UnorderedMap< std::thread::id, std::thread > m_threads
bool SubmitToThread(std::function< void()> &&) override
void Detach(std::thread::id id)
std::atomic< State > m_state
bool Submit(Fn &&fn, Args &&... args)
bool Submit(std::function< void()> &&callable)
virtual bool SubmitToThread(std::function< void()> &&)=0
virtual ~Executor()=default
bool SubmitToThread(std::function< void()> &&) override
PooledThreadExecutor(size_t poolSize, OverflowPolicy overflowPolicy=OverflowPolicy::QUEUE_TASKS_EVENLY_ACROSS_THREADS)
PooledThreadExecutor(PooledThreadExecutor &&)=delete
PooledThreadExecutor(const PooledThreadExecutor &)=delete
@ QUEUE_TASKS_EVENLY_ACROSS_THREADS
std::queue< T, Deque< T > > Queue
std::vector< T, Aws::Allocator< T > > Vector
AWS_CORE_API void Free(void *memoryPtr)
std::unordered_map< K, V, std::hash< K >, std::equal_to< K >, Aws::Allocator< std::pair< const K, V > > > UnorderedMap