Revision control
++ // This file is part of Eigen, a lightweight C++ template library
++ // for linear algebra.
++ //
++ // Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
++ //
++ // This Source Code Form is subject to the terms of the Mozilla
++ // Public License v. 2.0. If a copy of the MPL was not distributed
++ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++ #ifndef EIGEN_THREADPOOL_MODULE_H
++ #define EIGEN_THREADPOOL_MODULE_H
++
++ #include "Core"
++
++ #include "src/Core/util/DisableStupidWarnings.h"
++
++ /** \defgroup ThreadPool_Module ThreadPool Module
++ *
++ * This module provides 2 threadpool implementations
++ * - a simple reference implementation
++ * - a faster non blocking implementation
++ *
++ * \code
++ * #include <Eigen/ThreadPool>
++ * \endcode
++ */
++
++ #include <cstddef>
++ #include <cstring>
++ #include <time.h>
++
++ #include <vector>
++ #include <atomic>
++ #include <condition_variable>
++ #include <deque>
++ #include <mutex>
++ #include <thread>
++ #include <functional>
++ #include <memory>
++ #include <utility>
++
++ // There are non-parenthesized calls to "max" in the <unordered_map> header,
++ // which trigger a check in test/main.h causing compilation to fail.
++ // We work around the check here by removing the check for max in
++ // the case where we have to emulate thread_local.
++ #ifdef max
++ #undef max
++ #endif
++ #include <unordered_map>
++
++ #include "src/Core/util/Meta.h"
++ #include "src/Core/util/MaxSizeVector.h"
++
++ #ifndef EIGEN_MUTEX
++ #define EIGEN_MUTEX std::mutex
++ #endif
++ #ifndef EIGEN_MUTEX_LOCK
++ #define EIGEN_MUTEX_LOCK std::unique_lock<std::mutex>
++ #endif
++ #ifndef EIGEN_CONDVAR
++ #define EIGEN_CONDVAR std::condition_variable
++ #endif
++
++ // IWYU pragma: begin_exports
++ #include "src/ThreadPool/ThreadLocal.h"
++ #include "src/ThreadPool/ThreadYield.h"
++ #include "src/ThreadPool/ThreadCancel.h"
++ #include "src/ThreadPool/EventCount.h"
++ #include "src/ThreadPool/RunQueue.h"
++ #include "src/ThreadPool/ThreadPoolInterface.h"
++ #include "src/ThreadPool/ThreadEnvironment.h"
++ #include "src/ThreadPool/Barrier.h"
++ #include "src/ThreadPool/NonBlockingThreadPool.h"
++ #include "src/ThreadPool/CoreThreadPoolDevice.h"
++ #include "src/ThreadPool/ForkJoin.h"
++ // IWYU pragma: end_exports
++
++ #include "src/Core/util/ReenableStupidWarnings.h"
++
++ #endif // EIGEN_CXX11_THREADPOOL_MODULE_H