[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4549 - in /trunk/getfem/src: dal_singleton.cc getfem/d
From: |
andriy . andreykiv |
Subject: |
[Getfem-commits] r4549 - in /trunk/getfem/src: dal_singleton.cc getfem/dal_singleton.h |
Date: |
Thu, 20 Mar 2014 11:42:08 -0000 |
Author: andrico
Date: Thu Mar 20 12:42:08 2014
New Revision: 4549
URL: http://svn.gna.org/viewcvs/getfem?rev=4549&view=rev
Log:
another attempt to remove interdependence of static members initialization in
singletons
Modified:
trunk/getfem/src/dal_singleton.cc
trunk/getfem/src/getfem/dal_singleton.h
Modified: trunk/getfem/src/dal_singleton.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/dal_singleton.cc?rev=4549&r1=4548&r2=4549&view=diff
==============================================================================
--- trunk/getfem/src/dal_singleton.cc (original)
+++ trunk/getfem/src/dal_singleton.cc Thu Mar 20 12:42:08 2014
@@ -27,23 +27,15 @@
namespace dal {
- shared_ptr<singletons_manager> singletons_manager::m(0);
- atomic_bool singletons_manager::manager_exists(false);
-
+
singletons_manager::singletons_manager() : lst() {}
+
+ singletons_manager& singletons_manager::m = manager();
singletons_manager& singletons_manager::manager()
{
- if (!manager_exists)
- {
- getfem::omp_guard local_lock;
- if (!manager_exists)
- {
- m.reset(new singletons_manager());
- manager_exists = true;
- }
- }
- return *m;
+ static singletons_manager x;
+ return x;
}
@@ -73,11 +65,10 @@
{
/* sort singletons in increasing levels,
lowest levels will be destroyed first */
- std::sort(manager().lst(i).begin(),manager().lst(i).end(),
level_compare);
- std::vector<singleton_instance_base *>::const_iterator
it = manager().lst(i).begin();
- std::vector<singleton_instance_base *>::const_iterator ite =
manager().lst(i).end();
+ std::sort(lst(i).begin(),lst(i).end(), level_compare);
+ std::vector<singleton_instance_base *>::const_iterator
it = lst(i).begin();
+ std::vector<singleton_instance_base *>::const_iterator ite =
lst(i).end();
for ( ; it != ite; ++it) { delete *it; }
}
- manager_exists = false;
}
}
Modified: trunk/getfem/src/getfem/dal_singleton.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/dal_singleton.h?rev=4549&r1=4548&r2=4549&view=diff
==============================================================================
--- trunk/getfem/src/getfem/dal_singleton.h (original)
+++ trunk/getfem/src/getfem/dal_singleton.h Thu Mar 20 12:42:08 2014
@@ -68,11 +68,10 @@
class singletons_manager {
protected:
getfem::omp_distribute<std::vector<singleton_instance_base *> > lst;
- static shared_ptr<singletons_manager> m;
- static atomic_bool manager_exists;
+ static singletons_manager& manager();
+ static singletons_manager& m;
public:
- static singletons_manager& manager();
static void register_new_singleton(singleton_instance_base *p);
static void register_new_singleton(singleton_instance_base *p, int
ithread);
~singletons_manager();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4549 - in /trunk/getfem/src: dal_singleton.cc getfem/dal_singleton.h,
andriy . andreykiv <=