Minor fixes to parallelize code, cherry picked from @alexrj 5242b3e03ab2b195ba9c7c53fba705a8ed1c7abd
This commit is contained in:
parent
73ddd3b438
commit
d628764da6
@ -1292,7 +1292,11 @@ PrintConfigDef::PrintConfigDef()
|
||||
def->readonly = true;
|
||||
def->min = 1;
|
||||
def->max = 16;
|
||||
def->default_value = new ConfigOptionInt((boost::thread::hardware_concurrency() == 0) ? 2 : boost::thread::hardware_concurrency());
|
||||
{
|
||||
int threads = boost::thread::hardware_concurrency();
|
||||
if (threads == 0) threads = 2;
|
||||
def->default_value = new ConfigOptionInt(threads);
|
||||
}
|
||||
|
||||
def = this->add("toolchange_gcode", coString);
|
||||
def->label = "Tool change G-code";
|
||||
|
@ -4,6 +4,7 @@
|
||||
// this needs to be included early for MSVC (listing it in Build.PL is not enough)
|
||||
#include <ostream>
|
||||
#include <iostream>
|
||||
#include <math.h>
|
||||
#include <queue>
|
||||
#include <sstream>
|
||||
#include <cstdio>
|
||||
@ -119,9 +120,10 @@ template <class T> void
|
||||
parallelize(std::queue<T> queue, boost::function<void(T)> func,
|
||||
int threads_count = boost::thread::hardware_concurrency())
|
||||
{
|
||||
if (threads_count == 0) threads_count = 2;
|
||||
boost::mutex queue_mutex;
|
||||
boost::thread_group workers;
|
||||
for (int i = 0; i < threads_count; i++)
|
||||
for (int i = 0; i < fminf(threads_count, queue.size()); i++)
|
||||
workers.add_thread(new boost::thread(&_parallelize_do<T>, &queue, &queue_mutex, func));
|
||||
workers.join_all();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user