21 template<
class PTT,
class QM>
30 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<QM>::container_type;
31 using statistics_type=
typename PTT::
template statistics_type<QM>;
32 using exit_requested_type=
typename base_t::exit_requested_type;
35 constexpr __stdcall steal(exit_requested_type &, signalled_work_queue_type &)
noexcept(
true) {}
43 statistics_type statistics_;
46 process()
noexcept(
true)
override {
61 using batch_type=
typename PTT::
template pool_thread_queue_details<queue_model>;
62 using statistics_type=
typename batch_type::statistics_type;
63 using signalled_work_queue_type=
typename batch_type::container_type;
64 using exit_requested_type=
typename base_t::exit_requested_type;
67 __stdcall steal(exit_requested_type &, signalled_work_queue_type &)
noexcept(
true)
FORCE_INLINE;
75 return batch.statistics();
81 typename thread_traits::api_params_type::states
__fastcall process()
noexcept(
false)
override;
94 using container_type=
typename PTT::
template pool_thread_queue_details<queue_model>;
95 using statistics_type=
typename container_type::statistics_type;
96 using signalled_work_queue_type=
typename container_type::container_type;
97 using exit_requested_type=
typename base_t::exit_requested_type;
108 return work.statistics();
114 typename thread_traits::api_params_type::states
__fastcall process()
noexcept(
false)
override;
128 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<queue_model>::container_type;
129 using statistics_type=
typename PTT::
template pool_thread_queue_details<queue_model>::statistics_type;
130 using exit_requested_type=
typename base_t::exit_requested_type;
134 __stdcall slave(exit_requested_type &exit_requested,
typename signalled_work_queue_type::value_type &)
noexcept(
true)
FORCE_INLINE
135 :
base_t(exit_requested) {
145 statistics_type statistics_;
148 process()
noexcept(
true)
override {
164 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<queue_model>::container_type;
165 using statistics_type=
typename PTT::
template pool_thread_queue_details<queue_model>::statistics_type;
166 using exit_requested_type=
typename base_t::exit_requested_type;
170 __stdcall slave(exit_requested_type &exit_requested,
typename signalled_work_queue_type::value_type &&wk)
noexcept(
true)
FORCE_INLINE;
173 statistics_type
const &
__fastcall statistics()
const noexcept(
true) {
178 typename signalled_work_queue_type::value_type some_work;
179 statistics_type statistics_;
187 template<
class PTT,
class QM>
191 using queue_model=QM;
197 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<QM>::container_type;
198 using statistics_type=
typename signalled_work_queue_type::statistics_type;
199 using exit_requested_type=
typename base_t::exit_requested_type;
202 constexpr __stdcall steal(exit_requested_type &, signalled_work_queue_type &)
noexcept(
true) {}
210 statistics_type statistics_;
213 process()
noexcept(
true)
override {
227 using os_traits=
typename base_t::os_traits;
228 using model_type=
typename os_traits::thread_traits::model_type;
229 using lock_traits=
typename os_traits::lock_traits;
230 using thread_traits=
typename os_traits::thread_traits;
231 using batch_type=
typename PTT::
template pool_thread_queue_details<queue_model>;
232 using statistics_type=
typename batch_type::statistics_type;
233 using signalled_work_queue_type=
typename batch_type::container_type;
234 using exit_requested_type=
typename base_t::exit_requested_type;
237 __stdcall steal(exit_requested_type &, signalled_work_queue_type &)
noexcept(
true)
FORCE_INLINE;
245 return batch.statistics();
251 typename thread_traits::api_params_type::states
__fastcall process()
noexcept(
false)
override;
267 using container_type=
typename PTT::
template pool_thread_queue_details<queue_model>;
268 using statistics_type=
typename container_type::statistics_type;
269 using signalled_work_queue_type=
typename container_type::container_type;
270 using exit_requested_type=
typename base_t::exit_requested_type;
282 return work.statistics();
288 typename thread_traits::api_params_type::states
__fastcall process()
noexcept(
false)
override;
305 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<queue_model>::container_type;
306 using statistics_type=
typename PTT::
template statistics_type<queue_model>;
307 using exit_requested_type=
typename base_t::exit_requested_type;
311 __stdcall slave(exit_requested_type &exit_requested,
typename signalled_work_queue_type::value_type &&wk)
noexcept(
true)
FORCE_INLINE
312 :
base_t(exit_requested), some_work(wk) {
322 typename signalled_work_queue_type::value_type some_work;
323 statistics_type statistics_;
326 process()
noexcept(
true)
override {
342 using signalled_work_queue_type=
typename PTT::
template pool_thread_queue_details<queue_model>::container_type;
343 using statistics_type=
typename PTT::
template statistics_type<queue_model>;
344 using exit_requested_type=
typename base_t::exit_requested_type;
348 __stdcall slave(exit_requested_type &exit_requested,
typename signalled_work_queue_type::value_type &&wk)
noexcept(
true)
FORCE_INLINE;
357 typename signalled_work_queue_type::value_type some_work;
358 statistics_type statistics_;