From d9959766219772e808cf37b01a8863fb883fb796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20Sch=C3=B6berl?= Date: Mon, 23 Sep 2019 21:50:42 +0200 Subject: [PATCH] less locks on AddVolumeElement --- libsrc/meshing/meshclass.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libsrc/meshing/meshclass.cpp b/libsrc/meshing/meshclass.cpp index 7a420db3..b16b586b 100644 --- a/libsrc/meshing/meshclass.cpp +++ b/libsrc/meshing/meshclass.cpp @@ -332,9 +332,6 @@ namespace netgen ElementIndex Mesh :: AddVolumeElement (const Element & el) { - NgLock lock(mutex); - lock.Lock(); - /* int maxn = el[0]; for (int i = 1; i < el.GetNP(); i++) @@ -362,7 +359,17 @@ namespace netgen int ve = volelements.Size(); - volelements.Append (el); + if (volelements.Size() == volelements.AllocSize()) + { + NgLock lock(mutex); + lock.Lock(); + volelements.Append (el); + lock.UnLock(); + } + else + { + volelements.Append (el); + } volelements.Last().flags.illegal_valid = 0; // while (volelements.Size() > eltyps.Size()) @@ -370,7 +377,6 @@ namespace netgen timestamp = NextTimeStamp(); - lock.UnLock(); return ve; }