Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Protected Member Functions | |
private_worker (private_server &server, tbb_client &client, const size_t i) | |
Private Types | |
enum | state_t { st_init, st_starting, st_normal, st_quit } |
State in finite-state machine that controls the worker. More... | |
Private Member Functions | |
void | run () |
Actions executed by the associated thread. More... | |
void | wake_or_launch () |
Wake up associated thread (or launch a thread if there is none) More... | |
void | start_shutdown () |
Called by a thread (usually not the associated thread) to commence termination. More... | |
![]() | |
no_copy (const no_copy &)=delete | |
no_copy ()=default | |
Static Private Member Functions | |
static __RML_DECL_THREAD_ROUTINE | thread_routine (void *arg) |
static void | release_handle (thread_handle my_handle, bool join) |
Private Attributes | |
atomic< state_t > | my_state |
private_server & | my_server |
Associated server. More... | |
tbb_client & | my_client |
Associated client. More... | |
const size_t | my_index |
index used for avoiding the 64K aliasing problem More... | |
thread_monitor | my_thread_monitor |
Monitor for sleeping when there is no work to do. More... | |
thread_handle | my_handle |
Handle of the OS thread associated with this worker. More... | |
private_worker * | my_next |
Link for list of workers that are sleeping or have no associated thread. More... | |
Friends | |
class | private_server |
Definition at line 35 of file private_server.cpp.
|
private |
State in finite-state machine that controls the worker.
State diagram: init --> starting --> normal | | | | V | ---—> quit <---—/
Definition at line 44 of file private_server.cpp.
|
inlineprotected |
Definition at line 92 of file private_server.cpp.
|
staticprivate |
Definition at line 226 of file private_server.cpp.
Referenced by start_shutdown(), and wake_or_launch().
|
private |
Actions executed by the associated thread.
Definition at line 256 of file private_server.cpp.
References __TBB_ASSERT, my_client, my_next, my_server, tbb::internal::rml::private_server::my_slack, my_state, my_thread_monitor, tbb::internal::rml::private_server::propagate_chain_reaction(), tbb::internal::rml::private_server::remove_server_ref(), st_quit, and tbb::internal::rml::private_server::try_insert_in_asleep_list().
|
private |
Called by a thread (usually not the associated thread) to commence termination.
Definition at line 233 of file private_server.cpp.
References __TBB_ASSERT, tbb::internal::governor::does_client_join_workers(), my_client, my_handle, my_server, my_state, my_thread_monitor, release_handle(), tbb::internal::rml::private_server::remove_server_ref(), s, st_init, st_normal, st_quit, and st_starting.
|
staticprivate |
Definition at line 216 of file private_server.cpp.
Referenced by wake_or_launch().
|
inlineprivate |
Wake up associated thread (or launch a thread if there is none)
Definition at line 288 of file private_server.cpp.
References __TBB_ASSERT, tbb::internal::governor::does_client_join_workers(), my_client, my_handle, my_next, my_server, tbb::internal::rml::private_server::my_stack_size, my_state, my_thread_monitor, tbb::internal::affinity_helper::protect_affinity_mask(), release_handle(), s, st_init, st_normal, st_quit, st_starting, and thread_routine().
Referenced by tbb::internal::rml::private_server::wake_some().
|
friend |
Definition at line 76 of file private_server.cpp.
|
private |
Associated client.
Definition at line 60 of file private_server.cpp.
Referenced by run(), start_shutdown(), and wake_or_launch().
|
private |
Handle of the OS thread associated with this worker.
Definition at line 71 of file private_server.cpp.
Referenced by start_shutdown(), and wake_or_launch().
|
private |
index used for avoiding the 64K aliasing problem
Definition at line 63 of file private_server.cpp.
|
private |
Link for list of workers that are sleeping or have no associated thread.
Definition at line 74 of file private_server.cpp.
Referenced by tbb::internal::rml::private_server::private_server(), run(), tbb::internal::rml::private_server::try_insert_in_asleep_list(), wake_or_launch(), and tbb::internal::rml::private_server::wake_some().
|
private |
Associated server.
Definition at line 57 of file private_server.cpp.
Referenced by run(), start_shutdown(), and wake_or_launch().
|
private |
Definition at line 54 of file private_server.cpp.
Referenced by private_worker(), run(), start_shutdown(), and wake_or_launch().
|
private |
Monitor for sleeping when there is no work to do.
The invariant that holds for sleeping workers is: "my_slack<=0 && my_state==st_normal && I am on server's list of asleep threads"
Definition at line 68 of file private_server.cpp.
Referenced by run(), start_shutdown(), and wake_or_launch().