|
constexpr | nonjoinable_t (const cliques::element_type c=1) noexcept(true) FORCE_INLINE |
|
template<class T > |
constexpr FORCE_INLINE | nonjoinable_t (T const *parent, typename pool_traits_type::thread_wk_elem_type::cfg_type::node_property_t::value_type const details[], const cliques::element_type c=1) noexcept(true) |
|
constexpr | nonjoinable_t (thread_pool_type &p, const cliques::element_type c, typename pool_traits_type::thread_wk_elem_type::cfg_details_type::params const &cfg_p) noexcept(true) FORCE_INLINE |
|
constexpr | nonjoinable_t (nonjoinable_t const &nj, thread_pool_type &p) noexcept(true) FORCE_INLINE |
|
template<class InpWk > |
thread_pool_type &__fastcall FORCE_INLINE | push_back (InpWk &&wk) noexcept(false) |
| Transfer the closure_base-derived closure into the thread_pool, non-joinably. More...
|
|
template<class Alg > |
thread_pool_type &__fastcall FORCE_INLINE | push_back (parallel_algorithm< Alg > &&wk) noexcept(false) |
|
template<class R , class F , class L > |
thread_pool_type &__fastcall FORCE_INLINE | operator<< (boost::_bi::bind_t< R, F, L > &&wk) noexcept(false) |
|
template<template< class, class, class > class B, class R , class F , class L , class Test = typename std::enable_if<std::is_bind_expression<B<R, F, L>>::value>::type> |
thread_pool_type &__fastcall FORCE_INLINE | operator<< (B< R, F, L > &&wk) noexcept(false) |
|
template<class InpWk > |
thread_pool_type &__fastcall FORCE_INLINE | operator<< (InpWk &&wk) noexcept(false) |
|
template<class Alg > |
thread_pool_type &__fastcall FORCE_INLINE | operator<< (parallel_algorithm< Alg > &&wk) noexcept(false) |
|
template<typename thread_pool_type::priority_type Pri> |
priority_t< nonjoinable_t, TPB, Pri > __fastcall FORCE_INLINE | operator<< (typename thread_pool_type::template priority< Pri >) noexcept(true) |
| Non-joinably transfer the closure_base-derived closure, which will be process()ed at the specified priority. More...
|
|
cliques_t< nonjoinable_t > __fastcall | operator<< (cliques &&c) noexcept(true) FORCE_INLINE |
| Non-joinably transfer the closure_base-derived closure, using a sub-set of the pool_threads within the thread_pool. More...
|
|
template<class TPB>
class jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::nonjoinable_t< TPB >
A modifier to allow non-joinably transferring the work to the pool.
Definition at line 779 of file thread_dsel_types.hpp.
template<class TPB >
template<class InpWk >
Transfer the closure_base-derived closure into the thread_pool, non-joinably.
No need to verify that the closure_base-derived closure has not been previously transferred.
This operation requires at most 1 memory allocation.
- Todo:
- JMG: Hubert Matthews suggested that potentially expression templates could be used here to concatenate the thread_wk_t's that are transferred into the pool; also as an implementation of back_batching, i.e. GSS(k) scheduling.
- Parameters
-
wk | The closure_base-derived closure to be asynchronously executed, that must be copy-constructible. The result_type is inferred from the process(result_type &) or process() member-functions declared in the Wk type. Note that the process() member-function must not be overloaded, or this will not work, also that it must use the __fastcall calling-convention on those platforms that support it. The default mutator function is called process(), but you could provide an alternative member-function name if desired, as long as the signature is correct via the declaration of create_direct. |
- Returns
- A reference to the pool to allow chaining.
- See also
- create_direct
Definition at line 817 of file thread_dsel_types.hpp.
References jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::nonjoinable_t< TPB >::result_traits_.