]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Disabling parallel compute for windows
authorYoann Audouin <yoann.audouin@edf.fr>
Wed, 26 Oct 2022 14:17:27 +0000 (16:17 +0200)
committerYoann Audouin <yoann.audouin@edf.fr>
Fri, 4 Nov 2022 14:08:56 +0000 (15:08 +0100)
src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_Mesh.cxx
src/SMESH/SMESH_Mesh.hxx

index 0d59428af2f569df698a11901a4806b462c633fd..61d4fc010092a442bad28ac641216f65df412ddd 100644 (file)
 //
 
 //#define CHRONODEF
-
+//
+#ifndef WIN32
 #include <boost/asio.hpp>
+#endif
 #include "SMESH_Gen.hxx"
 
 #include "SMESH_DriverMesh.hxx"
@@ -348,9 +350,15 @@ bool SMESH_Gen::parallelComputeSubMeshes(
       smToCompute->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
       continue;
     }
+#ifdef WIN32
+    compute_function(smToCompute, computeEvent,
+                      shapeSM, aShapeOnly, allowedSubShapes,
+                      aShapesId);
+#else
     boost::asio::post(*(aMesh._pool), std::bind(compute_function, smToCompute, computeEvent,
                       shapeSM, aShapeOnly, allowedSubShapes,
                       aShapesId));
+#endif
   }
 
   // Waiting for the thread for Solids to finish
@@ -361,7 +369,6 @@ bool SMESH_Gen::parallelComputeSubMeshes(
   return ret;
 };
 
-
 //=============================================================================
 /*
  * Compute a mesh
index 077fd7f44c4c2d82e34b014685ad20c7e76a672b..fb373c5932ae01ae20422fcbdd2ec9afbe2ff88c 100644 (file)
@@ -239,9 +239,10 @@ SMESH_Mesh::~SMESH_Mesh()
     int result=pthread_create(&thread, NULL, deleteMeshDS, (void*)_meshDS);
 #endif
   }
-
+#ifndef WIN32
   if(_pool)
     DeletePoolThreads();
+#endif
 #ifndef _DEBUG_
     fs::remove_all(tmp_folder);
 #endif
index 18da4e93f0830dd7201c943af091a4b08ece2cfd..a59f7228a3ffc80d9fd9b33c84ed2bd84215b242 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "SMESH_SMESH.hxx"
 
+
 #include "SMDSAbs_ElementType.hxx"
 #include "SMESH_ComputeError.hxx"
 #include "SMESH_Controls.hxx"
 #include <ostream>
 
 #include <boost/filesystem.hpp>
+#ifndef WIN32
 #include <boost/asio/thread_pool.hpp>
 #include <boost/thread.hpp>
+#endif
 
 #ifdef WIN32
 #pragma warning(disable:4251) // Warning DLL Interface ...
@@ -388,6 +391,19 @@ class SMESH_EXPORT SMESH_Mesh
 
   // Parallel computation functions
 
+#ifdef WIN32
+  void Lock() {};
+  void Unlock() {};
+
+  int GetNbThreads(){return _NbThreads;};
+  void SetNbThreads(int nbThreads){std::cout << "Warning Parallel Meshing is disabled on Windows it will behave as a slower normal compute" << std::endl;_NbThreads=nbThreads;};
+
+  void InitPoolThreads(){};
+  void DeletePoolThreads(){};
+  void wait(){}
+
+  bool IsParallel(){return _NbThreads > 0;}
+#else
   void Lock() {_my_lock.lock();};
   void Unlock() {_my_lock.unlock();};
 
@@ -400,10 +416,13 @@ class SMESH_EXPORT SMESH_Mesh
   void wait(){_pool->join(); DeletePoolThreads(); InitPoolThreads(); }
 
   bool IsParallel(){return _NbThreads > 0;}
+#endif
 
   // Temporary folder used during parallel Computation
   boost::filesystem::path tmp_folder;
+  #ifndef WIN32
   boost::asio::thread_pool *     _pool = nullptr; //thread pool for computation
+  #endif
 
 
 private:
@@ -453,7 +472,9 @@ protected:
   TCallUp*                    _callUp;
 
   // Mutex for multhitreading write in SMESH_Mesh
+#ifndef WIN32
   boost::mutex _my_lock;
+#endif
   int _NbThreads=0;
 
 protected: