mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-25 05:20:34 +05:00
less locks in mesh.AddPoint/Element
This commit is contained in:
parent
abe971f15d
commit
fae350929c
@ -183,16 +183,22 @@ namespace netgen
|
|||||||
|
|
||||||
PointIndex Mesh :: AddPoint (const Point3d & p, int layer, POINTTYPE type)
|
PointIndex Mesh :: AddPoint (const Point3d & p, int layer, POINTTYPE type)
|
||||||
{
|
{
|
||||||
NgLock lock(mutex);
|
|
||||||
lock.Lock();
|
|
||||||
|
|
||||||
timestamp = NextTimeStamp();
|
|
||||||
|
|
||||||
// PointIndex pi = points.End();
|
// PointIndex pi = points.End();
|
||||||
PointIndex pi = *points.Range().end();
|
PointIndex pi = *points.Range().end();
|
||||||
points.Append ( MeshPoint (p, layer, type) );
|
if (points.Size() == points.AllocSize())
|
||||||
|
{
|
||||||
|
NgLock lock(mutex);
|
||||||
|
lock.Lock();
|
||||||
|
points.Append ( MeshPoint (p, layer, type) );
|
||||||
|
lock.UnLock();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
points.Append ( MeshPoint (p, layer, type) );
|
||||||
|
}
|
||||||
|
|
||||||
lock.UnLock();
|
timestamp = NextTimeStamp();
|
||||||
|
|
||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
@ -243,11 +249,9 @@ namespace netgen
|
|||||||
|
|
||||||
SurfaceElementIndex Mesh :: AddSurfaceElement (const Element2d & el)
|
SurfaceElementIndex Mesh :: AddSurfaceElement (const Element2d & el)
|
||||||
{
|
{
|
||||||
NgLock lock(mutex);
|
|
||||||
lock.Lock();
|
|
||||||
timestamp = NextTimeStamp();
|
timestamp = NextTimeStamp();
|
||||||
|
|
||||||
int maxn = el[0];
|
PointIndex maxn = el[0];
|
||||||
for (int i = 1; i < el.GetNP(); i++)
|
for (int i = 1; i < el.GetNP(); i++)
|
||||||
if (el[i] > maxn) maxn = el[i];
|
if (el[i] > maxn) maxn = el[i];
|
||||||
|
|
||||||
@ -268,7 +272,17 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
SurfaceElementIndex si = surfelements.Size();
|
SurfaceElementIndex si = surfelements.Size();
|
||||||
surfelements.Append (el);
|
if (surfelements.AllocSize() == surfelements.Size())
|
||||||
|
{
|
||||||
|
NgLock lock(mutex);
|
||||||
|
lock.Lock();
|
||||||
|
surfelements.Append (el);
|
||||||
|
lock.UnLock();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
surfelements.Append (el);
|
||||||
|
}
|
||||||
|
|
||||||
if (el.index<=0 || el.index > facedecoding.Size())
|
if (el.index<=0 || el.index > facedecoding.Size())
|
||||||
cerr << "has no facedecoding: fd.size = " << facedecoding.Size() << ", ind = " << el.index << endl;
|
cerr << "has no facedecoding: fd.size = " << facedecoding.Size() << ", ind = " << el.index << endl;
|
||||||
@ -279,7 +293,6 @@ namespace netgen
|
|||||||
if (SurfaceArea().Valid())
|
if (SurfaceArea().Valid())
|
||||||
SurfaceArea().Add (el);
|
SurfaceArea().Add (el);
|
||||||
|
|
||||||
lock.UnLock();
|
|
||||||
return si;
|
return si;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user