Skip to content

Parallel and asynchronous C++ execution based on std::thread, using thread pooling, self optimization and unique random number generators

License

Notifications You must be signed in to change notification settings

azantop/parallel_execution

Repository files navigation

parallel_execution

Parallel and asynchronous C++ execution based on std::thread, using thread pooling, self optimization and unique random number generators. The compilation requires C++-17 via the -std=c++17 flag. For example, we may fill an std::vector with random numbers in parallel:

std::vector< double > random( 100'000 );

auto generate_number = [] ( auto& element )
            {   
                thread_local auto& generator = parallel::get_generator(); 
                element = generator.gaussian();
            };
    
parallel::for_each( random.begin(), random.end(), generate_number );

See main.cpp for an example use case, the creation of random numbers in parallel. In the current settings, the library tests the number of threads used in each parallel function call, searching for the optimum. The chosen number of threads is reported on the std::out. To change this behavior, edit lines 56 and 57 in parallel.hpp

About

Parallel and asynchronous C++ execution based on std::thread, using thread pooling, self optimization and unique random number generators

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published