// TJP COPYRIGHT HEADER #pragma once #include "Parallel.h" #include #include #include #include #include namespace tjp::core::threads { struct Parallel { size_t n; std::thread *threads; using F = Function; F f; [[no_unique_address]] TestMutex oneUser; Event event; Event::Mutex mutex; bool running = false; using Signal = u128; static constexpr Signal SignalBit = 1; Signal signal = 0; Parallel(int max, int free); ~Parallel(); void start(int max, int free); void execute(size_t n, size_t m); void run(F &&f_); void stop(); } ; } // namespace