diff --git a/src/lib/io/ParticleIO.cpp b/src/lib/io/ParticleIO.cpp index 1597f777..2aec15a4 100644 --- a/src/lib/io/ParticleIO.cpp +++ b/src/lib/io/ParticleIO.cpp @@ -34,6 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ #include +#include "../core/Mutex.h" #include "../Partio.h" #include "readers.h" @@ -44,12 +45,15 @@ using namespace std; typedef ParticlesDataMutable* (*READER_FUNCTION)(const char*,const bool); typedef bool (*WRITER_FUNCTION)(const char*,const ParticlesData&,const bool); +PartioMutex initializationMutex; + map& readers() { static map data; static bool initialized=false; if(!initialized){ + initializationMutex.lock(); data["bgeo"]=readBGEO; data["bhclassic"]=readBGEO; data["geo"]=readGEO; @@ -67,6 +71,8 @@ readers() data["ptf"]=readPTC; data["itbl"]=readBGEO; data["atbl"]=readBGEO; + initialized=true; + initializationMutex.unlock(); } return data; } @@ -77,6 +83,7 @@ writers() static map data; static bool initialized=false; if(!initialized){ + initializationMutex.lock(); data["bgeo"]=writeBGEO; data["geo"]=writeGEO; data["pdb"]=writePDB; @@ -91,6 +98,8 @@ writers() data["ptf"]=writePTC; data["itbl"]=writeBGEO; data["atbl"]=writeBGEO; + initialized=true; + initializationMutex.unlock(); } return data; }