41 #ifndef __vtkSMPThreadLocal_h
42 #define __vtkSMPThreadLocal_h
50 typedef std::vector<T> TLS;
51 typedef typename TLS::iterator TLSIter;
81 int tid = this->GetThreadID();
82 if (!this->Initialized[tid])
84 this->Internal[tid] = this->Exemplar;
85 this->Initialized[tid] =
true;
87 return this->Internal[tid];
108 while(this->InitIter != this->EndIter)
122 return this->Iter != other.Iter;
132 std::vector<bool>::iterator InitIter;
133 std::vector<bool>::iterator EndIter;
142 TLSIter iter = this->Internal.begin();
143 std::vector<bool>::iterator iter2 =
144 this->Initialized.begin();
145 std::vector<bool>::iterator enditer =
146 this->Initialized.end();
149 while(iter2 != enditer)
159 retVal.InitIter = iter2;
160 retVal.EndIter = enditer;
172 retVal.InitIter = this->Initialized.end();
173 retVal.EndIter = this->Initialized.end();
174 retVal.Iter = this->Internal.end();
181 std::vector<bool> Initialized;
186 this->Internal.resize(this->GetNumberOfThreads());
187 this->Initialized.resize(this->GetNumberOfThreads());
188 std::fill(this->Initialized.begin(),
189 this->Initialized.end(),
193 inline int GetNumberOfThreads()
198 inline int GetThreadID()
vtkSMPThreadLocal(const T &exemplar)
bool operator!=(const iterator &other)
A simple thread local implementation for sequential operations.