#include <NonBlockingThreadPool.h>

Classes | |
| struct | PerThread |
| struct | ThreadData |
Public Types | |
| typedef RunQueue< Task, 1024 > | Queue |
| typedef Environment::Task | Task |
Public Member Functions | |
| void | Cancel () EIGEN_OVERRIDE |
| int | CurrentThreadId () const EIGEN_FINAL |
| int | NumThreads () const EIGEN_FINAL |
| void | Schedule (std::function< void()> fn) EIGEN_OVERRIDE |
| void | ScheduleWithHint (std::function< void()> fn, int start, int limit) override |
| void | SetStealPartitions (const std::vector< std::pair< unsigned, unsigned >> &partitions) |
| ThreadPoolTempl (int num_threads, bool allow_spinning, Environment env=Environment()) | |
| ThreadPoolTempl (int num_threads, Environment env=Environment()) | |
| ~ThreadPoolTempl () | |
Public Member Functions inherited from Eigen::ThreadPoolInterface | |
| virtual | ~ThreadPoolInterface () |
Private Types | |
| typedef Environment::EnvThread | Thread |
Private Member Functions | |
| void | AssertBounds (int start, int end) |
| void | ComputeCoprimes (int N, MaxSizeVector< unsigned > *coprimes) |
| void | DecodePartition (unsigned val, unsigned *start, unsigned *limit) |
| unsigned | EncodePartition (unsigned start, unsigned limit) |
| EIGEN_STRONG_INLINE PerThread * | GetPerThread () |
| unsigned | GetStealPartition (int i) |
| Task | GlobalSteal () |
| Task | LocalSteal () |
| int | NonEmptyQueueIndex () |
| void | SetStealPartition (size_t i, unsigned val) |
| Task | Steal (unsigned start, unsigned limit) |
| bool | WaitForWork (EventCount::Waiter *waiter, Task *t) |
| void | WorkerLoop (int thread_id) |
Static Private Member Functions | |
| static EIGEN_STRONG_INLINE uint64_t | GlobalThreadIdHash () |
| static EIGEN_STRONG_INLINE unsigned | Rand (uint64_t *state) |
Private Attributes | |
| MaxSizeVector< MaxSizeVector< unsigned > > | all_coprimes_ |
| const bool | allow_spinning_ |
| std::atomic< unsigned > | blocked_ |
| std::atomic< bool > | cancelled_ |
| std::atomic< bool > | done_ |
| EventCount | ec_ |
| Environment | env_ |
| unsigned | global_steal_partition_ |
| std::unique_ptr< Barrier > | init_barrier_ |
| const int | num_threads_ |
| std::unordered_map< uint64_t, std::unique_ptr< PerThread > > | per_thread_map_ |
| std::mutex | per_thread_map_mutex_ |
| std::atomic< bool > | spinning_ |
| MaxSizeVector< ThreadData > | thread_data_ |
| MaxSizeVector< EventCount::Waiter > | waiters_ |
Static Private Attributes | |
| static const int | kMaxPartitionBits = 16 |
| static const int | kMaxThreads = 1 << kMaxPartitionBits |
Definition at line 16 of file NonBlockingThreadPool.h.
| typedef RunQueue<Task, 1024> Eigen::ThreadPoolTempl< Environment >::Queue |
Definition at line 19 of file NonBlockingThreadPool.h.
| typedef Environment::Task Eigen::ThreadPoolTempl< Environment >::Task |
Definition at line 18 of file NonBlockingThreadPool.h.
|
private |
Definition at line 215 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 21 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 24 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 67 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 185 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Reimplemented from Eigen::ThreadPoolInterface.
Definition at line 138 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 199 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 155 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 179 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 175 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 456 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 195 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 376 of file NonBlockingThreadPool.h.
|
inlinestaticprivate |
Definition at line 452 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 362 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 431 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 153 of file NonBlockingThreadPool.h.
|
inlinestaticprivate |
Definition at line 472 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 101 of file NonBlockingThreadPool.h.
|
inlineoverridevirtual |
Reimplemented from Eigen::ThreadPoolInterface.
Definition at line 105 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 191 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 88 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 336 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 384 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 254 of file NonBlockingThreadPool.h.
|
private |
Definition at line 239 of file NonBlockingThreadPool.h.
|
private |
Definition at line 237 of file NonBlockingThreadPool.h.
|
private |
Definition at line 242 of file NonBlockingThreadPool.h.
|
private |
Definition at line 245 of file NonBlockingThreadPool.h.
|
private |
Definition at line 244 of file NonBlockingThreadPool.h.
|
private |
Definition at line 246 of file NonBlockingThreadPool.h.
|
private |
Definition at line 235 of file NonBlockingThreadPool.h.
|
private |
Definition at line 241 of file NonBlockingThreadPool.h.
|
private |
Definition at line 248 of file NonBlockingThreadPool.h.
|
staticprivate |
Definition at line 172 of file NonBlockingThreadPool.h.
|
staticprivate |
Definition at line 173 of file NonBlockingThreadPool.h.
|
private |
Definition at line 236 of file NonBlockingThreadPool.h.
|
private |
Definition at line 250 of file NonBlockingThreadPool.h.
|
private |
Definition at line 249 of file NonBlockingThreadPool.h.
|
private |
Definition at line 243 of file NonBlockingThreadPool.h.
|
private |
Definition at line 238 of file NonBlockingThreadPool.h.
|
private |
Definition at line 240 of file NonBlockingThreadPool.h.