mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
0033000: JT Import - perform XT translation in multiple threads
Creating mutex for proper parallel processing.
This commit is contained in:
@@ -20,12 +20,15 @@
|
|||||||
#include <ShapeProcess_Context.hxx>
|
#include <ShapeProcess_Context.hxx>
|
||||||
#include <Standard_ErrorHandler.hxx>
|
#include <Standard_ErrorHandler.hxx>
|
||||||
#include <Standard_Failure.hxx>
|
#include <Standard_Failure.hxx>
|
||||||
|
#include <Standard_Mutex.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#include <TCollection_HAsciiString.hxx>
|
#include <TCollection_HAsciiString.hxx>
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(ShapeProcess_Context,Standard_Transient)
|
IMPLEMENT_STANDARD_RTTIEXT(ShapeProcess_Context, Standard_Transient)
|
||||||
|
|
||||||
|
static Standard_Mutex THE_SHAPE_PROCESS_MUTEX;
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeProcess_Context
|
//function : ShapeProcess_Context
|
||||||
@@ -73,6 +76,7 @@ Standard_Boolean ShapeProcess_Context::Init (const Standard_CString file,
|
|||||||
|
|
||||||
Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standard_CString name)
|
Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standard_CString name)
|
||||||
{
|
{
|
||||||
|
Standard_Mutex::Sentry aLock(&THE_SHAPE_PROCESS_MUTEX);
|
||||||
// Optimisation of loading resource file: file is load only once
|
// Optimisation of loading resource file: file is load only once
|
||||||
// and reloaded only if file date has changed
|
// and reloaded only if file date has changed
|
||||||
static Handle(Resource_Manager) sRC;
|
static Handle(Resource_Manager) sRC;
|
||||||
@@ -127,7 +131,7 @@ Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standa
|
|||||||
sUMtime = aUMtime;
|
sUMtime = aUMtime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sRC;
|
return new Resource_Manager(*sRC);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
@@ -64,7 +64,9 @@
|
|||||||
#include <XSAlgo_ToolContainer.hxx>
|
#include <XSAlgo_ToolContainer.hxx>
|
||||||
#include <TopExp_Explorer.hxx>
|
#include <TopExp_Explorer.hxx>
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer,Standard_Transient)
|
IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer, Standard_Transient)
|
||||||
|
|
||||||
|
static Standard_Mutex THE_RESOURCE_MUTEX;
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : XSAlgo_AlgoContainer
|
//function : XSAlgo_AlgoContainer
|
||||||
@@ -167,9 +169,11 @@ TopoDS_Shape XSAlgo_AlgoContainer::ProcessShape (const TopoDS_Shape& shape,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Define runtime tolerances and do Shape Processing
|
// Define runtime tolerances and do Shape Processing
|
||||||
rsc->SetResource ( "Runtime.Tolerance", Prec );
|
{
|
||||||
rsc->SetResource ( "Runtime.MaxTolerance", maxTol );
|
Standard_Mutex::Sentry aLock(&THE_RESOURCE_MUTEX);
|
||||||
|
rsc->SetResource("Runtime.Tolerance", Prec);
|
||||||
|
rsc->SetResource("Runtime.MaxTolerance", maxTol);
|
||||||
|
}
|
||||||
if ( !ShapeProcess::Perform(context, seq, theProgress) )
|
if ( !ShapeProcess::Perform(context, seq, theProgress) )
|
||||||
return shape; // return original shape
|
return shape; // return original shape
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user