Thread island#
#include <pagmo/islands/thread_island.hpp>
-
class thread_island#
Thread island.
This class is a user-defined island (UDI) that will run evolutions in a separate thread of execution.
thread_island
is the UDI type automatically selected by the constructors ofisland
on non-POSIX platforms or when both the island’s problem and algorithm provide at least thebasic
thread safety guarantee.-
explicit thread_island(bool use_pool)#
New in version 2.16.
Constructor with use_pool flag.
The use_pool flag signals whether or not this island should use a common thread pool shared by all islands.
Using a thread pool is more computationally-efficient, for at least two reasons:
it avoids runtime overhead when the number of islands evolving simultaneously is larger than the CPU count (e.g., in a large
archipelago
);because the implementation uses the Intel TBB libraries, it integrates better with other pagmo facilities built on top of TBB (e.g., the
thread_bfe
batch fitness evaluator).
A thread pool however also introduces a serializing behaviour because the number of evolutions actually running at the same time is limited by the CPU count (whereas without the thread pool an unlimited number of evolutions can be active at the same time, albeit with a performance penalty).
- Param use_pool
a boolean flag signalling whether or not a thread pool should be used by the island.
-
thread_island()#
Default constructor, equivalent to the previous constructor with use_pool set to
True
.-
std::string get_name() const#
Island’s name.
- Return
"Thread island"
.
-
std::string get_extra_info() const#
New in version 2.16.
Island’s extra info.
- Return
a string containing extra info about this island instance.
Run an evolution.
This method will use copies of isl’s algorithm and population, obtained via
pagmo::island::get_algorithm()
andpagmo::island::get_population()
, to evolve the input island’s population. The evolved population will be assigned to isl usingpagmo::island::set_population()
, and the algorithm used for the evolution will be assigned to isl usingpagmo::island::set_algorithm()
.-
explicit thread_island(bool use_pool)#