1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0031921: Application Framework - reading OCAF data from several threads is not possible

Make myLastFoundChild field of TDF_LabelNode that can be changed during accessing to different sub-labels in different threads as atomic (only for newer versions of compilers which support this "atomic").

Added definition of Standard_ATOMIC macro to the Standard_Macro.hxx
This commit is contained in:
mpv
2020-11-16 16:49:23 +03:00
committed by bugmaster
parent 9d9edcf49d
commit b84b672185
2 changed files with 27 additions and 8 deletions

View File

@@ -22,6 +22,10 @@
#include <TDF_HAllocator.hxx>
#include <NCollection_DefineAlloc.hxx>
#ifdef Standard_HASATOMIC
#include <atomic>
#endif
class TDF_Attribute;
class TDF_AttributeIterator;
class TDF_ChildIterator;
@@ -160,15 +164,15 @@ class TDF_LabelNode {
// Private Fields
// --------------------------------------------------------------------------
TDF_LabelNodePtr myFather;
TDF_LabelNodePtr myBrother;
TDF_LabelNodePtr myFirstChild;
TDF_LabelNodePtr myLastFoundChild; //jfa 10.01.2003
Standard_Integer myTag;
Standard_Integer myFlags; // Flags & Depth
Handle(TDF_Attribute) myFirstAttribute;
TDF_LabelNodePtr myFather;
TDF_LabelNodePtr myBrother;
TDF_LabelNodePtr myFirstChild;
Standard_ATOMIC(TDF_LabelNodePtr) myLastFoundChild; //jfa 10.01.2003
Standard_Integer myTag;
Standard_Integer myFlags; // Flags & Depth
Handle(TDF_Attribute) myFirstAttribute;
#ifdef KEEP_LOCAL_ROOT
TDF_Data * myData;
TDF_Data * myData;
#endif
#ifdef OCCT_DEBUG
TCollection_AsciiString myDebugEntry;