mirror of https://github.com/CGAL/cgal
TBB_IMPLEMENT_CPP0X is always 0 when using c++14
This commit is contained in:
parent
540ad2a8ed
commit
288c283784
|
|
@ -105,14 +105,7 @@ const int TET_SHAPE = 3;
|
||||||
# define CGAL_CONCURRENT_MESH_3_PROFILING
|
# define CGAL_CONCURRENT_MESH_3_PROFILING
|
||||||
//# define CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT
|
//# define CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT
|
||||||
|
|
||||||
// ==========================================================================
|
#include <thread>
|
||||||
// TBB
|
|
||||||
// ==========================================================================
|
|
||||||
# if TBB_IMPLEMENT_CPP0X
|
|
||||||
# include <tbb/compat/thread>
|
|
||||||
# else
|
|
||||||
# include <thread>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// SEQUENTIAL
|
// SEQUENTIAL
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,7 @@
|
||||||
#include <CGAL/Bbox_3.h>
|
#include <CGAL/Bbox_3.h>
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#if TBB_IMPLEMENT_CPP0X
|
#include <thread>
|
||||||
# include <tbb/compat/thread>
|
|
||||||
#else
|
|
||||||
# include <thread>
|
|
||||||
#endif
|
|
||||||
#include <tbb/enumerable_thread_specific.h>
|
#include <tbb/enumerable_thread_specific.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
|
||||||
|
|
@ -22,56 +22,16 @@
|
||||||
- CGAL::cpp11::thread
|
- CGAL::cpp11::thread
|
||||||
- CGAL::cpp11::atomic
|
- CGAL::cpp11::atomic
|
||||||
- CGAL::cpp11::sleep_for
|
- CGAL::cpp11::sleep_for
|
||||||
|
|
||||||
It uses either TBB or STD depending on what's available: as TBB can
|
|
||||||
quite often override `std::thread`, it is possible that TBB will be
|
|
||||||
used instead of STD even if the real CXX11 `std::thread` is
|
|
||||||
available.
|
|
||||||
|
|
||||||
As the conflicting API between TBB and STD can be quite complicated,
|
|
||||||
we offer a more generic `sleep_for()` function that takes
|
|
||||||
double-typed seconds as argument and deals with it.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// @lrineau shall we simply ignore TBB_IMPLEMENT_CPP0X?
|
#include <thread>
|
||||||
#if defined(CGAL_LINKED_WITH_TBB)
|
#include <chrono>
|
||||||
# include <tbb/tbb_config.h>
|
|
||||||
# if TBB_IMPLEMENT_CPP0X
|
|
||||||
# include <tbb/compat/thread>
|
|
||||||
# include <atomic>
|
|
||||||
# include <tbb/tick_count.h>
|
|
||||||
# define CGAL_USE_TBB_THREADS 1
|
|
||||||
# else
|
|
||||||
# define CGAL_USE_TBB_THREADS 0
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define CGAL_USE_TBB_THREADS 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !CGAL_USE_TBB_THREADS
|
|
||||||
# include <thread>
|
|
||||||
# include <chrono>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <CGAL/atomic.h> // for CGAL::cpp11::atomic
|
#include <CGAL/atomic.h> // for CGAL::cpp11::atomic
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
namespace cpp11 {
|
namespace cpp11 {
|
||||||
|
|
||||||
#if CGAL_USE_TBB_THREADS
|
|
||||||
|
|
||||||
using std::thread; // std::thread is declared by TBB if TBB_IMPLEMENT_CPP0X == 1
|
|
||||||
|
|
||||||
inline void sleep_for (double seconds)
|
|
||||||
{
|
|
||||||
// std::this_thread::sleep_for is declared by TBB if TBB_IMPLEMENT_CPP0X == 1
|
|
||||||
// It takes interval_t types as argument (!= from the std norm)
|
|
||||||
std::this_thread::sleep_for(tbb::tick_count::interval_t(seconds));
|
|
||||||
}
|
|
||||||
|
|
||||||
#else // C++11 implementation
|
|
||||||
|
|
||||||
using std::thread;
|
using std::thread;
|
||||||
|
|
||||||
inline void sleep_for (double seconds)
|
inline void sleep_for (double seconds)
|
||||||
|
|
@ -82,20 +42,8 @@ namespace cpp11 {
|
||||||
nanoseconds ns (nanoseconds::rep (1000000000.0 * seconds));
|
nanoseconds ns (nanoseconds::rep (1000000000.0 * seconds));
|
||||||
std::this_thread::sleep_for(ns);
|
std::this_thread::sleep_for(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CGAL_NO_ATOMIC) && defined(CGAL_LINKED_WITH_TBB)
|
|
||||||
// If <CGAL/atomic.h> did not defined CGAL::cpp11::atomic, then use
|
|
||||||
// std::atomic as a fallback.
|
|
||||||
using std::atomic;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // cpp11
|
} // cpp11
|
||||||
|
|
||||||
|
|
||||||
} //namespace CGAL
|
} //namespace CGAL
|
||||||
|
|
||||||
#undef CGAL_USE_TBB_THREADS
|
|
||||||
|
|
||||||
#endif // CGAL_THREAD_H
|
#endif // CGAL_THREAD_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue