| 
    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... | |
  Private Member Functions inherited from tbb::internal::no_copy | |
| 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().