| 160 | |
| 161 | |
| 162 | void System::reset() |
| 163 | { |
| 164 | num_threads_ = 1; |
| 165 | preferred_system_ = DDS_SYSTEM_THREAD_BASIC; |
| 166 | |
| 167 | available_system_.resize(DDS_SYSTEM_THREAD_SIZE); |
| 168 | available_system_[DDS_SYSTEM_THREAD_BASIC] = true; |
| 169 | for (unsigned i = 1; i < DDS_SYSTEM_THREAD_SIZE; i++) |
| 170 | available_system_[i] = false; |
| 171 | |
| 172 | #ifdef DDS_THREADS_WINAPI |
| 173 | available_system_[DDS_SYSTEM_THREAD_WINAPI] = true; |
| 174 | #endif |
| 175 | |
| 176 | #ifdef DDS_THREADS_OPENMP |
| 177 | available_system_[DDS_SYSTEM_THREAD_OPENMP] = true; |
| 178 | #endif |
| 179 | |
| 180 | #ifdef DDS_THREADS_GCD |
| 181 | available_system_[DDS_SYSTEM_THREAD_GCD] = true; |
| 182 | #endif |
| 183 | |
| 184 | #ifdef DDS_THREADS_BOOST |
| 185 | available_system_[DDS_SYSTEM_THREAD_BOOST] = true; |
| 186 | #endif |
| 187 | |
| 188 | #ifdef DDS_THREADS_STL |
| 189 | available_system_[DDS_SYSTEM_THREAD_STL] = true; |
| 190 | #endif |
| 191 | |
| 192 | #ifdef DDS_THREADS_TBB |
| 193 | available_system_[DDS_SYSTEM_THREAD_TBB] = true; |
| 194 | #endif |
| 195 | |
| 196 | #ifdef DDS_THREADS_STLIMPL |
| 197 | available_system_[DDS_SYSTEM_THREAD_STLIMPL] = true; |
| 198 | #endif |
| 199 | |
| 200 | #ifdef DDS_THREADS_PPLIMPL |
| 201 | available_system_[DDS_SYSTEM_THREAD_PPLIMPL] = true; |
| 202 | #endif |
| 203 | |
| 204 | // Take the first of any multi-threading system defined. |
| 205 | for (unsigned k = 1; k < available_system_.size(); k++) |
| 206 | { |
| 207 | if (available_system_[k]) |
| 208 | { |
| 209 | preferred_system_ = k; |
| 210 | break; |
| 211 | } |
| 212 | } |
| 213 | } |
| 214 | |
| 215 | |
| 216 | void System::get_hardware( |