summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2016-03-22 12:41:40 +1100
committer Vas Crabb <vas@vastheman.com>2016-03-22 12:42:19 +1100
commitf83078d8bfa326d5e9351fd78208ebd7aca1ee8b (patch)
tree0c3a0f89ea9eca57332c5d2f5a2f226f47a37d78
parent95f865828622aafa52e1d9156b09e8b91a8426d0 (diff)
Use std::atomic in nl_lists.h with OpenMP
-rw-r--r--.gitignore2
-rw-r--r--src/lib/netlist/nl_lists.h9
2 files changed, 7 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index b5573638381..abbcbee172e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,7 +31,7 @@
!/makefile
!/mame.doxygen
!/*.md
-!/*.bdc
+!/*.bdf
!/LICENSE
/.idea
regtests/chdman/temp
diff --git a/src/lib/netlist/nl_lists.h b/src/lib/netlist/nl_lists.h
index ac288fec153..eb0fe0700f2 100644
--- a/src/lib/netlist/nl_lists.h
+++ b/src/lib/netlist/nl_lists.h
@@ -13,6 +13,9 @@
#include "nl_config.h"
#include "plib/plists.h"
+#include <atomic>
+
+
// ----------------------------------------------------------------------------------------
// timed queue
// ----------------------------------------------------------------------------------------
@@ -62,7 +65,7 @@ namespace netlist
{
#if HAS_OPENMP && USE_OPENMP
/* Lock */
- while (atomic_exchange32(&m_lock, 1)) { }
+ while (m_lock.exchange(1)) { }
#endif
const _Time &t = e.exec_time();
entry_t * i = m_end++;
@@ -94,7 +97,7 @@ namespace netlist
{
/* Lock */
#if HAS_OPENMP && USE_OPENMP
- while (atomic_exchange32(&m_lock, 1)) { }
+ while (m_lock.exchange(1)) { }
#endif
for (entry_t * i = m_end - 1; i > &m_list[0]; i--)
{
@@ -143,7 +146,7 @@ namespace netlist
private:
#if HAS_OPENMP && USE_OPENMP
- volatile INT32 m_lock;
+ volatile std::atomic<int> m_lock;
#endif
entry_t * m_end;
parray_t<entry_t> m_list;