From f83078d8bfa326d5e9351fd78208ebd7aca1ee8b Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 22 Mar 2016 12:41:40 +1100 Subject: [PATCH] Use std::atomic in nl_lists.h with OpenMP --- .gitignore | 2 +- src/lib/netlist/nl_lists.h | 9 ++++++--- 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 + + // ---------------------------------------------------------------------------------------- // 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 m_lock; #endif entry_t * m_end; parray_t m_list;