modifié : MakefileNoOTB

modifié :         include/triskeleDealThreads.hpp
	modifié :         include/triskeleDealThreads.tpp
This commit is contained in:
Git Merciol 2018-03-12 10:59:14 +01:00
parent 56ab83f230
commit 806fcc2f9a
3 changed files with 18 additions and 10 deletions

View File

@ -17,7 +17,7 @@ TST_SRC = $(patsubst %, $(CPP_DIR)/%.cpp, $(TST_PRG))
TST_OUT = $(patsubst %, $(OUT_DIR)/%, $(TST_PRG))
## FLAGS ###############################
DFLAGS = -O2 -DNDEBUG -DBOOST_DISABLE_ASSERTS -DNO_OTB
DFLAGS = -O2 -DNDEBUG -DBOOST_DISABLE_ASSERTS -DNO_OTB -DTHREAD_DISABLE
#DFLAGS = -g -DENABLE_LOG -DNO_OTB -DTHREAD_DISABLE -DENABLE_SMART_LOG
IFLAGS = $(DFLAGS) -MMD -I$(HPP_DIR)
LFLAGS = -L$(LIB_DIR) -ltriskele -lstdc++ -lpthread -lboost_system -lboost_chrono -lboost_thread -lboost_program_options -lboost_date_time -lboost_serialization -lboost_filesystem -lboost_unit_test_framework -lgdal

View File

@ -1,6 +1,9 @@
#ifndef _TRISKELE_DEAL_THREADS_HPP
#define _TRISKELE_DEAL_THREADS_HPP
#ifdef XEON_TBB_THREAD
#include <tbb/tbb.h>
#endif
#include <boost/thread.hpp>
namespace triskele {

View File

@ -61,17 +61,22 @@ dealThread (const DimImg &maxId, unsigned int coreCount, const FunctThreadMinMax
std::vector<DimImg> maxIds = getDealThreadBounds (maxId, coreCount);
boost::thread tasks [coreCount];
#ifdef THREAD_DISABLE
for (unsigned int idCopyValInThread = 0; idCopyValInThread < coreCount; ++idCopyValInThread) {
#ifndef THREAD_DISABLE
tasks[idCopyValInThread] = boost::thread ([/*no ref!!!*/idCopyValInThread, &maxIds, &functThreadMinMax] () {
#endif
functThreadMinMax (idCopyValInThread, maxIds[idCopyValInThread], maxIds[idCopyValInThread+1]);
#ifndef THREAD_DISABLE
});
#endif
functThreadMinMax (idCopyValInThread, maxIds[idCopyValInThread], maxIds[idCopyValInThread+1]);
}
#elif XEON_TBB_THREAD
using namespace tbb;
#pragma warning(disable: 588)
parallel_for (size_t (0), size_t (coreCount), [&maxIds, &functThreadMinMax] (size_t idCopyValInThread) {
functThreadMinMax (idCopyValInThread, maxIds[idCopyValInThread], maxIds[idCopyValInThread+1]);
});
#else
for (unsigned int idCopyValInThread = 0; idCopyValInThread < coreCount; ++idCopyValInThread) {
tasks[idCopyValInThread] = boost::thread ([/*no ref!!!*/idCopyValInThread, &maxIds, &functThreadMinMax] () {
functThreadMinMax (idCopyValInThread, maxIds[idCopyValInThread], maxIds[idCopyValInThread+1]);
});
}
#ifndef THREAD_DISABLE
for (unsigned int i = 0; i < coreCount; ++i)
tasks[i].join ();
#endif