Ви не можете вибрати більше 25 тем
Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
|
- #pragma once
-
- #include <ecs/core/utils/thread_pool/pool.h>
-
- namespace ecs {
- namespace core {
- namespace utils {
-
- template<typename T_task>
- inline void thread_pool
- ::post(T_task&& task, ssize_t worker_id)
- {
- if (worker_id == -1)
- {
- _tasks.push(std::forward<T_task>(task));
- for (auto& w : _workers)
- {
- w->signal();
- }
- }
- else if (worker_id >= 1 && worker_id <= static_cast<ssize_t>(_workers.size()))
- {
- auto& w = _workers.at(static_cast<size_t>(worker_id - 1));
- w->post(std::forward<T_task>(task));
- }
- else
- {
- throw std::invalid_argument(std::string("invalid worker_id: ") + std::to_string(worker_id));
- }
- }
-
- } } }
|