#include "memoire.h"
#include <chrono>
+#include <functional>
#ifdef WIN32
#include <windows.h>
using namespace std;
#include <boost/filesystem.hpp>
+#include <boost/asio.hpp>
namespace fs = boost::filesystem;
// Environment variable separator
// ===============================================
TopAbs_ShapeEnum previousShapeType = TopAbs_VERTEX;
- std::vector<std::future<void>> pending;
int nbThreads = aMesh.GetNbThreads();
auto begin = std::chrono::high_resolution_clock::now();
//DEBUG std::cout << "Shape Type" << shapeType << " previous" << previousShapeType << std::endl;
if ((aMesh.IsParallel()||nbThreads!=0) && shapeType != previousShapeType) {
// Waiting for all threads for the previous type to end
- for(auto &it: pending){
- it.wait();
- }
+ aMesh.wait();
std::string file_name;
switch(previousShapeType){
}
//Resetting threaded pool info
previousShapeType = shapeType;
- pending.clear();
}
// check for preview dimension limitations
}
if(aMesh.IsParallel())
{
- pending.push_back(aMesh._pool->push(compute_function, smToCompute, computeEvent,
- shapeSM, aShapeOnly, allowedSubShapes,
- aShapesId));
+ std::cout << "Submitting thread function " << std::endl;
+ boost::asio::post(*(aMesh._pool), [](){std::cerr<< "In Here" << std::endl;});
+ boost::asio::post(*(aMesh._pool), std::bind(compute_function, 1, smToCompute, computeEvent,
+ shapeSM, aShapeOnly, allowedSubShapes,
+ aShapesId));
} else {
auto begin2 = std::chrono::high_resolution_clock::now();
// TODO: Check error handling in parallel mode
if(aMesh.IsParallel()){
// Waiting for the thread for Solids to finish
- for(auto &it:pending){
- it.wait();
- }
- pending.clear();
+ aMesh.wait();
}
aMesh.GetMeshDS()->Modified();