Fix a hang-up during zone filling
On OpenMP single core systems only the first thread launched. It means that only the UI updating thread was running, without the one responsible for actual computation. It is fixed by enforcing at least two threads.
This commit is contained in:
parent
c39fd46c07
commit
86566fc142
|
@ -32,6 +32,10 @@
|
||||||
#include <profile.h>
|
#include <profile.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_OPENMP
|
||||||
|
#include <omp.h>
|
||||||
|
#endif /* USE_OPENMP */
|
||||||
|
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
bool operator<( const CN_ANCHOR_PTR& a, const CN_ANCHOR_PTR& b )
|
bool operator<( const CN_ANCHOR_PTR& a, const CN_ANCHOR_PTR& b )
|
||||||
|
@ -521,7 +525,8 @@ void CN_CONNECTIVITY_ALGO::searchConnections( bool aIncludeZones )
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
#pragma omp parallel
|
// launch at least two threads, one to compute, second to update UI
|
||||||
|
#pragma omp parallel num_threads( std::max( omp_get_num_procs(), 2 ) )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
|
|
|
@ -116,7 +116,8 @@ void ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*> aZones )
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
#pragma omp parallel
|
// launch at least two threads, one to compute, second to update UI
|
||||||
|
#pragma omp parallel num_threads( std::max( omp_get_num_procs(), 2 ) )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
|
@ -177,7 +178,8 @@ void ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*> aZones )
|
||||||
m_progressReporter->SetMaxProgress( toFill.size() );
|
m_progressReporter->SetMaxProgress( toFill.size() );
|
||||||
}
|
}
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
#pragma omp parallel
|
// launch at least two threads, one to compute, second to update UI
|
||||||
|
#pragma omp parallel num_threads( std::max( omp_get_num_procs(), 2 ) )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef USE_OPENMP
|
#ifdef USE_OPENMP
|
||||||
|
|
Loading…
Reference in New Issue