![]() |
|
#include <ThreadLocal.h>
Classes | |
struct | ThreadIdAndValue |
Public Member Functions | |
ThreadLocal (int capacity) | |
ThreadLocal (int capacity, Initialize initialize) | |
ThreadLocal (int capacity, Initialize initialize, Release release) | |
T & | local () |
void | ForEach (std::function< void(std::thread::id, T &)> f) |
~ThreadLocal () | |
Private Member Functions | |
T & | SpilledLocal (std::thread::id this_thread) |
Private Attributes | |
Initialize | initialize_ |
Release | release_ |
const int | capacity_ |
MaxSizeVector< ThreadIdAndValue > | data_ |
MaxSizeVector< std::atomic< ThreadIdAndValue * > > | ptr_ |
std::atomic< int > | filled_records_ |
EIGEN_MUTEX | mu_ |
std::unordered_map< std::thread::id, T > | per_thread_map_ |
|
inlineexplicit |
|
inline |
|
inline |
References Eigen::ThreadLocal< T, Initialize, Release >::capacity_, Eigen::ThreadLocal< T, Initialize, Release >::data_, eigen_assert, i, and Eigen::ThreadLocal< T, Initialize, Release >::ptr_.
|
inline |
References Eigen::ThreadLocal< T, Initialize, Release >::capacity_, Eigen::ThreadLocal< T, Initialize, Release >::filled_records_, Eigen::ThreadLocal< T, Initialize, Release >::mu_, Eigen::ThreadLocal< T, Initialize, Release >::per_thread_map_, Eigen::ThreadLocal< T, Initialize, Release >::ptr_, Eigen::ThreadLocal< T, Initialize, Release >::release_, and Eigen::ThreadLocal< T, Initialize, Release >::ThreadIdAndValue::value.
|
inline |
References Eigen::ThreadLocal< T, Initialize, Release >::capacity_, f(), Eigen::ThreadLocal< T, Initialize, Release >::filled_records_, Eigen::ThreadLocal< T, Initialize, Release >::mu_, Eigen::ThreadLocal< T, Initialize, Release >::per_thread_map_, Eigen::ThreadLocal< T, Initialize, Release >::ptr_, Eigen::ThreadLocal< T, Initialize, Release >::ThreadIdAndValue::thread_id, and Eigen::ThreadLocal< T, Initialize, Release >::ThreadIdAndValue::value.
Referenced by test_large_number_of_tasks_no_spill(), test_large_number_of_tasks_with_spill(), test_simple_thread_local(), and test_zero_sized_thread_local().
|
inline |
References Eigen::ThreadLocal< T, Initialize, Release >::capacity_, Eigen::ThreadLocal< T, Initialize, Release >::data_, eigen_assert, Eigen::ThreadLocal< T, Initialize, Release >::filled_records_, Eigen::ThreadLocal< T, Initialize, Release >::initialize_, load(), Eigen::ThreadLocal< T, Initialize, Release >::ptr_, Eigen::ThreadLocal< T, Initialize, Release >::SpilledLocal(), Eigen::ThreadLocal< T, Initialize, Release >::ThreadIdAndValue::thread_id, Eigen::value, and Eigen::ThreadLocal< T, Initialize, Release >::ThreadIdAndValue::value.
Referenced by test_large_number_of_tasks_no_spill(), test_large_number_of_tasks_with_spill(), test_simple_thread_local(), and test_zero_sized_thread_local().
|
inlineprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Eigen::ThreadLocal< T, Initialize, Release >::~ThreadLocal().