0025748: Parallel version of progress indicator
authormsv <msv@opencascade.com>
Fri, 10 Jul 2020 11:19:31 +0000 (14:19 +0300)
committerabv <abv@opencascade.com>
Sat, 12 Sep 2020 17:42:22 +0000 (20:42 +0300)
commit7e785937b3e65df86f35364e1036e446d6339cec
treed204ea2c5c997ecd2746240753d152d635318972
parent99289bed0a3c89d0fe9d2025d3452c0f66c7c9e1
0025748: Parallel version of progress indicator

Progress indication mechanism is refactored to support incrementing progress within multithreaded algorithms.

The class Message_ProgressIndicator is only an interface to the user application.
It accumulates the progress provided by progress scopes.
The counter is protected by mutex for thread-safety.

The new class Message_ProgressScope replacing Message_ProgressSentry should be used to advance the progress.
The scopes are nested to each other to reflect the nested nature of operations.
The new class Message_ProgressRange should be used to pass the progress to sub-scopes.

All OCCT algorithms involving progress indication have been updated to new API.

Improvements in Draw_ProgressIndicator:
- Separate console mode has been added in order to make possible to put the progress into std::cout instead
  or in addition to the draw interpreter, instead of trigger option "-tclOutput".
- Treatment of Ctrl-Break signal has been added.
  Now any operation can be aborted by Ctrl-C or Ctrl-Break keystroke.

Added new test case 'perf fclasses progr_par' for testing of parallel work of the progress.
271 files changed:
adm/upgrade.dat
dox/dev_guides/upgrade/upgrade.md
samples/CSharp/OCCTProxy/OCCTProxy.cpp
samples/CSharp/OCCTProxy_D3D/OCCTProxyD3D.cpp
src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.cxx
src/BOPAlgo/BOPAlgo_BOP.cxx
src/BOPAlgo/BOPAlgo_Builder.cxx
src/BOPAlgo/BOPAlgo_Builder_2.cxx
src/BOPAlgo/BOPAlgo_Builder_3.cxx
src/BOPAlgo/BOPAlgo_CheckerSI.cxx
src/BOPAlgo/BOPAlgo_MakerVolume.cxx
src/BOPAlgo/BOPAlgo_Options.cxx
src/BOPAlgo/BOPAlgo_Options.hxx
src/BOPAlgo/BOPAlgo_PaveFiller_2.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_4.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx
src/BOPAlgo/BOPAlgo_Splitter.cxx
src/BRepAlgoAPI/BRepAlgoAPI_Algo.hxx
src/BRepAlgoAPI/BRepAlgoAPI_BuilderAlgo.cxx
src/BRepAlgoAPI/BRepAlgoAPI_Check.cxx
src/BRepBuilderAPI/BRepBuilderAPI_Sewing.cxx
src/BRepBuilderAPI/BRepBuilderAPI_Sewing.hxx
src/BRepTest/BRepTest_SurfaceCommands.cxx
src/BRepToIGES/BRepToIGES_BREntity.cxx
src/BRepToIGES/BRepToIGES_BREntity.hxx
src/BRepToIGES/BRepToIGES_BRShell.cxx
src/BRepToIGES/BRepToIGES_BRShell.hxx
src/BRepToIGES/BRepToIGES_BRSolid.cxx
src/BRepToIGES/BRepToIGES_BRSolid.hxx
src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx
src/BRepToIGESBRep/BRepToIGESBRep_Entity.hxx
src/BRepTools/BRepTools.cxx
src/BRepTools/BRepTools.hxx
src/BRepTools/BRepTools_Modifier.cxx
src/BRepTools/BRepTools_Modifier.hxx
src/BRepTools/BRepTools_ShapeSet.cxx
src/BRepTools/BRepTools_ShapeSet.hxx
src/BinDrivers/BinDrivers_DocumentRetrievalDriver.cxx
src/BinDrivers/BinDrivers_DocumentRetrievalDriver.hxx
src/BinDrivers/BinDrivers_DocumentStorageDriver.cxx
src/BinDrivers/BinDrivers_DocumentStorageDriver.hxx
src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx
src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.hxx
src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx
src/BinLDrivers/BinLDrivers_DocumentStorageDriver.hxx
src/BinMNaming/BinMNaming_NamedShapeDriver.cxx
src/BinMNaming/BinMNaming_NamedShapeDriver.hxx
src/BinTools/BinTools.cxx
src/BinTools/BinTools.hxx
src/BinTools/BinTools_Curve2dSet.cxx
src/BinTools/BinTools_Curve2dSet.hxx
src/BinTools/BinTools_CurveSet.cxx
src/BinTools/BinTools_CurveSet.hxx
src/BinTools/BinTools_ShapeSet.cxx
src/BinTools/BinTools_ShapeSet.hxx
src/BinTools/BinTools_SurfaceSet.cxx
src/BinTools/BinTools_SurfaceSet.hxx
src/CDF/CDF_Application.cxx
src/CDF/CDF_Application.hxx
src/CDF/CDF_Store.cxx
src/CDF/CDF_Store.hxx
src/CDF/CDF_StoreList.cxx
src/CDF/CDF_StoreList.hxx
src/CDM/CDM_Application.hxx
src/DBRep/DBRep.cxx
src/DDocStd/DDocStd_ApplicationCommands.cxx
src/Draw/Draw.cxx
src/Draw/Draw.hxx
src/Draw/Draw_ProgressIndicator.cxx
src/Draw/Draw_ProgressIndicator.hxx
src/Draw/Draw_VariableCommands.cxx
src/GeomPlate/GeomPlate_BuildPlateSurface.cxx
src/GeomPlate/GeomPlate_BuildPlateSurface.hxx
src/GeomTools/GeomTools_Curve2dSet.cxx
src/GeomTools/GeomTools_Curve2dSet.hxx
src/GeomTools/GeomTools_CurveSet.cxx
src/GeomTools/GeomTools_CurveSet.hxx
src/GeomTools/GeomTools_SurfaceSet.cxx
src/GeomTools/GeomTools_SurfaceSet.hxx
src/IGESCAFControl/IGESCAFControl_Reader.cxx
src/IGESCAFControl/IGESCAFControl_Reader.hxx
src/IGESCAFControl/IGESCAFControl_Writer.cxx
src/IGESCAFControl/IGESCAFControl_Writer.hxx
src/IGESControl/IGESControl_ActorWrite.cxx
src/IGESControl/IGESControl_ActorWrite.hxx
src/IGESControl/IGESControl_Controller.cxx
src/IGESControl/IGESControl_Controller.hxx
src/IGESControl/IGESControl_Writer.cxx
src/IGESControl/IGESControl_Writer.hxx
src/IGESToBRep/IGESToBRep_Actor.cxx
src/IGESToBRep/IGESToBRep_Actor.hxx
src/IGESToBRep/IGESToBRep_BRepEntity.cxx
src/IGESToBRep/IGESToBRep_BRepEntity.hxx
src/IGESToBRep/IGESToBRep_CurveAndSurface.cxx
src/IGESToBRep/IGESToBRep_CurveAndSurface.hxx
src/IGESToBRep/IGESToBRep_Reader.cxx
src/IGESToBRep/IGESToBRep_Reader.hxx
src/Message/FILES
src/Message/Message_ProgressIndicator.cxx
src/Message/Message_ProgressIndicator.hxx
src/Message/Message_ProgressIndicator.lxx [deleted file]
src/Message/Message_ProgressRange.hxx [new file with mode: 0644]
src/Message/Message_ProgressScale.cxx [deleted file]
src/Message/Message_ProgressScale.hxx [deleted file]
src/Message/Message_ProgressScale.lxx [deleted file]
src/Message/Message_ProgressScope.hxx [new file with mode: 0644]
src/Message/Message_ProgressSentry.cxx [deleted file]
src/Message/Message_ProgressSentry.hxx
src/Message/Message_ProgressSentry.lxx [deleted file]
src/Message/Message_SequenceOfProgressScale.hxx [deleted file]
src/PCDM/PCDM_Reader.hxx
src/PCDM/PCDM_StorageDriver.cxx
src/PCDM/PCDM_StorageDriver.hxx
src/PCDM/PCDM_Writer.hxx
src/Plate/Plate_Plate.cxx
src/Plate/Plate_Plate.hxx
src/QABugs/QABugs_11.cxx
src/RWGltf/RWGltf_CafReader.cxx
src/RWGltf/RWGltf_CafReader.hxx
src/RWGltf/RWGltf_CafWriter.cxx
src/RWGltf/RWGltf_CafWriter.hxx
src/RWGltf/RWGltf_GltfJsonParser.cxx
src/RWGltf/RWGltf_GltfJsonParser.pxx
src/RWMesh/RWMesh_CafReader.cxx
src/RWMesh/RWMesh_CafReader.hxx
src/RWObj/RWObj.cxx
src/RWObj/RWObj.hxx
src/RWObj/RWObj_CafReader.cxx
src/RWObj/RWObj_CafReader.hxx
src/RWObj/RWObj_Reader.cxx
src/RWObj/RWObj_Reader.hxx
src/RWStl/RWStl.cxx
src/RWStl/RWStl.hxx
src/RWStl/RWStl_Reader.cxx
src/RWStl/RWStl_Reader.hxx
src/STEPCAFControl/STEPCAFControl_Reader.cxx
src/STEPCAFControl/STEPCAFControl_Reader.hxx
src/STEPCAFControl/STEPCAFControl_Writer.cxx
src/STEPCAFControl/STEPCAFControl_Writer.hxx
src/STEPControl/STEPControl_ActorRead.cxx
src/STEPControl/STEPControl_ActorRead.hxx
src/STEPControl/STEPControl_ActorWrite.cxx
src/STEPControl/STEPControl_ActorWrite.hxx
src/STEPControl/STEPControl_Controller.cxx
src/STEPControl/STEPControl_Controller.hxx
src/STEPControl/STEPControl_Reader.cxx
src/STEPControl/STEPControl_Reader.hxx
src/STEPControl/STEPControl_Writer.cxx
src/STEPControl/STEPControl_Writer.hxx
src/SWDRAW/SWDRAW_ShapeFix.cxx
src/SWDRAW/SWDRAW_ShapeUpgrade.cxx
src/ShapeCustom/ShapeCustom.cxx
src/ShapeCustom/ShapeCustom.hxx
src/ShapeFix/ShapeFix.cxx
src/ShapeFix/ShapeFix.hxx
src/ShapeFix/ShapeFix_Shape.cxx
src/ShapeFix/ShapeFix_Shape.hxx
src/ShapeFix/ShapeFix_Shell.cxx
src/ShapeFix/ShapeFix_Shell.hxx
src/ShapeFix/ShapeFix_Solid.cxx
src/ShapeFix/ShapeFix_Solid.hxx
src/ShapeProcess/ShapeProcess.cxx
src/ShapeProcess/ShapeProcess.hxx
src/ShapeProcess/ShapeProcess_Context.cxx
src/ShapeProcess/ShapeProcess_Context.hxx
src/ShapeProcess/ShapeProcess_OperFunc.hxx
src/ShapeProcess/ShapeProcess_OperLibrary.cxx
src/ShapeProcess/ShapeProcess_Operator.hxx
src/ShapeProcess/ShapeProcess_UOperator.cxx
src/ShapeProcess/ShapeProcess_UOperator.hxx
src/ShapeProcessAPI/ShapeProcessAPI_ApplySequence.cxx
src/ShapeProcessAPI/ShapeProcessAPI_ApplySequence.hxx
src/StdLDrivers/StdLDrivers_DocumentRetrievalDriver.cxx
src/StdLDrivers/StdLDrivers_DocumentRetrievalDriver.hxx
src/StepToTopoDS/StepToTopoDS_Builder.cxx
src/StepToTopoDS/StepToTopoDS_Builder.hxx
src/StepToTopoDS/StepToTopoDS_MakeTransformed.cxx
src/StepToTopoDS/StepToTopoDS_MakeTransformed.hxx
src/StepToTopoDS/StepToTopoDS_TranslateShell.cxx
src/StepToTopoDS/StepToTopoDS_TranslateShell.hxx
src/StlAPI/StlAPI_Writer.cxx
src/StlAPI/StlAPI_Writer.hxx
src/TDocStd/TDocStd_Application.cxx
src/TDocStd/TDocStd_Application.hxx
src/TopTools/TopTools_LocationSet.cxx
src/TopTools/TopTools_LocationSet.hxx
src/TopTools/TopTools_ShapeSet.cxx
src/TopTools/TopTools_ShapeSet.hxx
src/TopoDSToStep/TopoDSToStep_Builder.cxx
src/TopoDSToStep/TopoDSToStep_Builder.hxx
src/TopoDSToStep/TopoDSToStep_MakeBrepWithVoids.cxx
src/TopoDSToStep/TopoDSToStep_MakeBrepWithVoids.hxx
src/TopoDSToStep/TopoDSToStep_MakeFacetedBrep.cxx
src/TopoDSToStep/TopoDSToStep_MakeFacetedBrep.hxx
src/TopoDSToStep/TopoDSToStep_MakeFacetedBrepAndBrepWithVoids.cxx
src/TopoDSToStep/TopoDSToStep_MakeFacetedBrepAndBrepWithVoids.hxx
src/TopoDSToStep/TopoDSToStep_MakeManifoldSolidBrep.cxx
src/TopoDSToStep/TopoDSToStep_MakeManifoldSolidBrep.hxx
src/TopoDSToStep/TopoDSToStep_MakeShellBasedSurfaceModel.cxx
src/TopoDSToStep/TopoDSToStep_MakeShellBasedSurfaceModel.hxx
src/Transfer/Transfer_Actor.gxx
src/Transfer/Transfer_ActorDispatch.cxx
src/Transfer/Transfer_ActorDispatch.hxx
src/Transfer/Transfer_ActorOfFinderProcess.cxx
src/Transfer/Transfer_ActorOfFinderProcess.hxx
src/Transfer/Transfer_ActorOfProcessForFinder.hxx
src/Transfer/Transfer_ActorOfProcessForTransient.hxx
src/Transfer/Transfer_ActorOfTransientProcess.cxx
src/Transfer/Transfer_ActorOfTransientProcess.hxx
src/Transfer/Transfer_ProcessForFinder.hxx
src/Transfer/Transfer_ProcessForFinder_0.cxx
src/Transfer/Transfer_ProcessForTransient.hxx
src/Transfer/Transfer_ProcessForTransient_0.cxx
src/Transfer/Transfer_TransferOutput.cxx
src/Transfer/Transfer_TransferOutput.hxx
src/Transfer/Transfer_TransferProcess.gxx
src/TransferBRep/TransferBRep_Reader.cxx
src/TransferBRep/TransferBRep_Reader.hxx
src/ViewerTest/ViewerTest_ViewerCommands.cxx
src/XCAFDoc/XCAFDoc_NotesTool.hxx
src/XSAlgo/XSAlgo_AlgoContainer.cxx
src/XSAlgo/XSAlgo_AlgoContainer.hxx
src/XSControl/XSControl_Controller.cxx
src/XSControl/XSControl_Controller.hxx
src/XSControl/XSControl_Reader.cxx
src/XSControl/XSControl_Reader.hxx
src/XSControl/XSControl_TransferReader.cxx
src/XSControl/XSControl_TransferReader.hxx
src/XSControl/XSControl_TransferWriter.cxx
src/XSControl/XSControl_TransferWriter.hxx
src/XSControl/XSControl_WorkSession.cxx
src/XSControl/XSControl_WorkSession.hxx
src/XSControl/XSControl_Writer.cxx
src/XSControl/XSControl_Writer.hxx
src/XSDRAWIGES/XSDRAWIGES.cxx
src/XSDRAWSTEP/XSDRAWSTEP.cxx
src/XSDRAWSTLVRML/XSDRAWSTLVRML.cxx
src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.cxx
src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.hxx
src/XmlDrivers/XmlDrivers_DocumentStorageDriver.cxx
src/XmlDrivers/XmlDrivers_DocumentStorageDriver.hxx
src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.cxx
src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.hxx
src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx
src/XmlMDF/XmlMDF.cxx
src/XmlMDF/XmlMDF.hxx
src/XmlMNaming/XmlMNaming_NamedShapeDriver.cxx
src/XmlMNaming/XmlMNaming_NamedShapeDriver.hxx
src/math/math_Gauss.cxx
src/math/math_Gauss.hxx
src/math/math_Recipes.cxx
src/math/math_Recipes.hxx
tests/bugs/fclasses/bug28478
tests/bugs/fclasses/bug31092
tests/bugs/modalg_5/bug22747
tests/bugs/moddata_2/bug22572
tests/bugs/moddata_2/bug22746_1
tests/bugs/moddata_2/bug22746_2
tests/bugs/moddata_2/bug22746_3
tests/caf/progress/A1
tests/caf/progress/A2
tests/caf/progress/B1
tests/caf/progress/B2
tests/caf/progress/C1
tests/caf/progress/C2
tests/de_mesh/shape_write_stl/B1
tests/perf/fclasses/progr_par [new file with mode: 0644]