summaryrefslogtreecommitdiff
path: root/src/Nerve_GIC
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2018-06-06 22:00:46 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2018-06-06 22:00:46 +0000
commit027dac0358de7d07f772c32cbdf2306dfeae714b (patch)
tree4538783c8561a2d966e52a1f4d6d7f98f1b29a52 /src/Nerve_GIC
parent2fd6f14cbe1c949d5724ffe762ce27ab9ab95941 (diff)
Merge of branch thread_local_optional_vincent to take into account XCode < v.8 as thread local is not available
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/trunk@3554 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 9dcf072a4606d1131a925bca4571f0f1b5547d14
Diffstat (limited to 'src/Nerve_GIC')
-rw-r--r--src/Nerve_GIC/include/gudhi/GIC.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Nerve_GIC/include/gudhi/GIC.h b/src/Nerve_GIC/include/gudhi/GIC.h
index 05c6a386..ebe463dd 100644
--- a/src/Nerve_GIC/include/gudhi/GIC.h
+++ b/src/Nerve_GIC/include/gudhi/GIC.h
@@ -142,6 +142,9 @@ class Cover_complex {
std::string point_cloud_name;
std::string color_name;
+ // 2 threads using 2 different GIC will have their own random engine
+ std::default_random_engine re;
+
// Remove all edges of a graph.
void remove_edges(Graph& G) {
boost::graph_traits<Graph>::edge_iterator ei, ei_end;
@@ -150,8 +153,7 @@ class Cover_complex {
// Find random number in [0,1].
double GetUniform() {
- thread_local std::default_random_engine re;
- thread_local std::uniform_real_distribution<double> Dist(0, 1);
+ std::uniform_real_distribution<double> Dist(0, 1);
return Dist(re);
}
@@ -422,7 +424,9 @@ class Cover_complex {
if (distances.size() == 0) compute_pairwise_distances(distance);
- #ifdef GUDHI_USE_TBB
+ // This cannot be parallelized if thread_local is not defined
+ // thread_local is not defined for XCode < v.8
+ #if defined(GUDHI_USE_TBB) && defined(GUDHI_CAN_USE_CXX11_THREAD_LOCAL)
tbb::mutex deltamutex;
tbb::parallel_for(0, N, [&](int i){
std::vector<int> samples(m);