1*bf2c3715SXin Li// This file is part of Eigen, a lightweight C++ template library 2*bf2c3715SXin Li// for linear algebra. 3*bf2c3715SXin Li// 4*bf2c3715SXin Li// Copyright (C) 2016 Benoit Steiner <[email protected]> 5*bf2c3715SXin Li// 6*bf2c3715SXin Li// This Source Code Form is subject to the terms of the Mozilla 7*bf2c3715SXin Li// Public License v. 2.0. If a copy of the MPL was not distributed 8*bf2c3715SXin Li// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9*bf2c3715SXin Li 10*bf2c3715SXin Li#ifndef EIGEN_CXX11_THREADPOOL_MODULE 11*bf2c3715SXin Li#define EIGEN_CXX11_THREADPOOL_MODULE 12*bf2c3715SXin Li 13*bf2c3715SXin Li#include "../../../Eigen/Core" 14*bf2c3715SXin Li 15*bf2c3715SXin Li#include "../../../Eigen/src/Core/util/DisableStupidWarnings.h" 16*bf2c3715SXin Li 17*bf2c3715SXin Li/** \defgroup CXX11_ThreadPool_Module C++11 ThreadPool Module 18*bf2c3715SXin Li * 19*bf2c3715SXin Li * This module provides 2 threadpool implementations 20*bf2c3715SXin Li * - a simple reference implementation 21*bf2c3715SXin Li * - a faster non blocking implementation 22*bf2c3715SXin Li * 23*bf2c3715SXin Li * This module requires C++11. 24*bf2c3715SXin Li * 25*bf2c3715SXin Li * \code 26*bf2c3715SXin Li * #include <Eigen/CXX11/ThreadPool> 27*bf2c3715SXin Li * \endcode 28*bf2c3715SXin Li */ 29*bf2c3715SXin Li 30*bf2c3715SXin Li 31*bf2c3715SXin Li// The code depends on CXX11, so only include the module if the 32*bf2c3715SXin Li// compiler supports it. 33*bf2c3715SXin Li#if (EIGEN_COMP_CXXVER >= 11) 34*bf2c3715SXin Li#include <cstddef> 35*bf2c3715SXin Li#include <cstring> 36*bf2c3715SXin Li#include <time.h> 37*bf2c3715SXin Li 38*bf2c3715SXin Li#include <vector> 39*bf2c3715SXin Li#include <atomic> 40*bf2c3715SXin Li#include <condition_variable> 41*bf2c3715SXin Li#include <deque> 42*bf2c3715SXin Li#include <mutex> 43*bf2c3715SXin Li#include <thread> 44*bf2c3715SXin Li#include <functional> 45*bf2c3715SXin Li#include <memory> 46*bf2c3715SXin Li#include <utility> 47*bf2c3715SXin Li 48*bf2c3715SXin Li// There are non-parenthesized calls to "max" in the <unordered_map> header, 49*bf2c3715SXin Li// which trigger a check in test/main.h causing compilation to fail. 50*bf2c3715SXin Li// We work around the check here by removing the check for max in 51*bf2c3715SXin Li// the case where we have to emulate thread_local. 52*bf2c3715SXin Li#ifdef max 53*bf2c3715SXin Li#undef max 54*bf2c3715SXin Li#endif 55*bf2c3715SXin Li#include <unordered_map> 56*bf2c3715SXin Li 57*bf2c3715SXin Li#include "src/util/CXX11Meta.h" 58*bf2c3715SXin Li#include "src/util/MaxSizeVector.h" 59*bf2c3715SXin Li 60*bf2c3715SXin Li#include "src/ThreadPool/ThreadLocal.h" 61*bf2c3715SXin Li#include "src/ThreadPool/ThreadYield.h" 62*bf2c3715SXin Li#include "src/ThreadPool/ThreadCancel.h" 63*bf2c3715SXin Li#include "src/ThreadPool/EventCount.h" 64*bf2c3715SXin Li#include "src/ThreadPool/RunQueue.h" 65*bf2c3715SXin Li#include "src/ThreadPool/ThreadPoolInterface.h" 66*bf2c3715SXin Li#include "src/ThreadPool/ThreadEnvironment.h" 67*bf2c3715SXin Li#include "src/ThreadPool/Barrier.h" 68*bf2c3715SXin Li#include "src/ThreadPool/NonBlockingThreadPool.h" 69*bf2c3715SXin Li 70*bf2c3715SXin Li#endif 71*bf2c3715SXin Li 72*bf2c3715SXin Li#include "../../../Eigen/src/Core/util/ReenableStupidWarnings.h" 73*bf2c3715SXin Li 74*bf2c3715SXin Li#endif // EIGEN_CXX11_THREADPOOL_MODULE 75