Merge pull request #1426 from afabri/Polynomial-static-GF

Polynomial:  Make variables thread local
This commit is contained in:
Laurent Rineau 2016-10-03 15:10:03 +02:00
commit 1ee796427b
1 changed files with 8 additions and 6 deletions

View File

@ -42,6 +42,7 @@
#include <CGAL/Real_timer.h> #include <CGAL/Real_timer.h>
#include <CGAL/Cache.h> #include <CGAL/Cache.h>
#include <CGAL/Polynomial/Wang_traits.h> #include <CGAL/Polynomial/Wang_traits.h>
#include <CGAL/tss.h>
namespace CGAL { namespace CGAL {
@ -66,20 +67,21 @@ struct Cached_extended_euclidean_algorithm{
typedef Extended_euclidean_algorithm<UFD> FUNC; typedef Extended_euclidean_algorithm<UFD> FUNC;
typedef CGAL::Cache<PAIR,PAIR,FUNC> CACHE; typedef CGAL::Cache<PAIR,PAIR,FUNC> CACHE;
static CACHE cache; CACHE& cache()
{
CGAL_STATIC_THREAD_LOCAL_VARIABLE(CACHE, m_cache, CACHE());
return m_cache;
}
void operator()(const UFD& p, const UFD& q, UFD& s, UFD& t){ void operator()(const UFD& p, const UFD& q, UFD& s, UFD& t){
PAIR pq(p,q); PAIR pq(p,q);
PAIR result = cache(pq); PAIR result = cache()(pq);
s = result.first; s = result.first;
t = result.second; t = result.second;
} }
}; };
template <class UFD>
typename Cached_extended_euclidean_algorithm<UFD>::CACHE
Cached_extended_euclidean_algorithm<UFD>::cache;
} // namespace CGALi_pure_wang } // namespace CGALi_pure_wang