16 std::vector<int> v(
count);
18 auto generator = tpf::chrono_random::random_generator<int>(0, 100);
32 os << std::this_thread::get_id() <<
" - &member: " << &member ;
35 std::lock_guard<std::mutex> lock(
mutex);
36 std::cout <<
"Thread ID: " << std::this_thread::get_id() <<
" - \t" << &member <<
std::endl;
39 Tpf_GoParallel_VoidAlgorithm_VoidCallback(for_each, callback,
40 std::execution::par, v.begin(), v.end());
48template<
typename Type>
59 functor(std::set<std::string>& set_threads):
78 os << std::this_thread::get_id() <<
" - &m_instance_member: " << &
m_instance_member;
82 std::cout <<
"Thread ID: " << std::this_thread::get_id()
95 std::vector<int> v(
count);
97 auto generator = tpf::chrono_random::random_generator<int>(0, 100);
108 std::stringstream os;
109 os << std::this_thread::get_id();
113 std::for_each(std::execution::par_unseq, v.begin(), v.end(),
functor<int>{threads});
125 std::vector<int> v(
count);
127 auto generator = tpf::chrono_random::random_generator<int>(0, 100);
131 auto callback = [](
auto& e)
149 std::vector<int> v(
count);
151 auto generator = tpf::chrono_random::random_generator<int>(0, 100);
155 auto callback = [](
const auto& e)
163 tpf::parallel::safe_transform(callback, std::execution::par_unseq, v.begin(), v.end(), v.begin());
174 std::vector<int> v(
count);
176 auto generator = tpf::chrono_random::random_generator<int>(0, 100);
180 auto callback = [](
auto& e)
189 tpf::parallel::throw_for_each(callback, std::execution::par_unseq, v.begin(), v.end());
193 catch(
const std::exception& e)
205 std::vector<element_t> v(
count);
207 auto generator = tpf::chrono_random::random_generator<element_t>(-10, 10);
213 auto callback = [&
mutex, &generator](
const auto& e)
215 std::lock_guard<std::mutex> lock(
mutex);
216 auto d = generator();
225 tpf::parallel::throw_transform(callback, std::execution::par_unseq, v.begin(), v.end(), v.begin());
228 catch(
const std::exception& e)
241 std::vector<element_t> v(
count);
243 auto generator = tpf::chrono_random::random_generator<element_t>(-10, 10);
249 auto callback = [](
const auto& e)
256 auto [opr, rlt] = tpf::parallel::safe_find_if(callback, std::execution::par_unseq, v.begin(), v.end());
void safe_for_each(Policy &&policy, IteratorBegin &&begin, IteratorEnd &&end, Callback &&callback)
void how_many_threads_with_functor()
void test_transform_throw()
void test_for_each_throw()
void random_fill(ContainerType< Type, Types... > &container, const RandomGeneratorType< RType, RTypes... > &random_generator)
Stream output operators are defined.
types::enable_if_integral_t< Type > safe_div(Type a, Type b)
Safe division of integral types.
std::set< std::string > & threads
functor(std::set< std::string > &set_threads)
static thread_local int m_thread_local
static std::mutex m_mutex
void operator()(Type &e) const
functor(const functor &lhs)
Stream output operators << are implemented.
This file implements safe arithmetic.