3 #include <boost/test/unit_test.hpp> 21 void run(
int x, std::string
const& y) {
22 std::unique_lock<std::mutex> lk(mu);
23 id = std::this_thread::get_id();
26 std::this_thread::sleep_for(std::chrono::seconds(1));
30 std::unique_lock<std::mutex> lk(mu);
31 id = std::this_thread::get_id();
34 std::this_thread::sleep_for(std::chrono::seconds(1));
37 int run_simple(
int x, std::string
const& y) {
50 void test_with_g(
int x, std::string
const& y) {
61 cfg.
name(
"test-thread");
67 auto f0 = std::make_shared<fixture>();
68 auto fu0 = [f0](
int x, std::string
const& y) { f0->run(x, y); };
77 BOOST_CHECK_NE(f1.id, std::thread::id());
78 BOOST_CHECK_EQUAL(f1.value, 1);
79 BOOST_CHECK_EQUAL(f1.msg,
"t1");
82 BOOST_CHECK_NE(f0->id, std::thread::id());
83 BOOST_CHECK_EQUAL(f0->value, 47);
84 BOOST_CHECK_EQUAL(f0->msg,
"47");
87 BOOST_CHECK_NE(g.id, std::thread::id());
88 BOOST_CHECK_EQUAL(g.value, 42);
89 BOOST_CHECK_EQUAL(g.msg,
"42");
98 cfg.
name(
"name_too_long_should_fail__1234567890ABCDEF__");
100 BOOST_TEST_MESSAGE(
"main id=" << std::this_thread::get_id());
104 BOOST_TEST_MESSAGE(
"id=" << std::this_thread::get_id());
108 BOOST_CHECK_EQUAL(cnt, 0);
112 BOOST_TEST_MESSAGE(
"id=" << std::this_thread::get_id());
116 BOOST_CHECK_EQUAL(cnt, 0);
120 BOOST_TEST_MESSAGE(
"id=" << std::this_thread::get_id());
124 BOOST_CHECK_EQUAL(cnt, 0);
133 BOOST_TEST_MESSAGE(
"main id=" << std::this_thread::get_id());
137 BOOST_TEST_MESSAGE(
"id=" << std::this_thread::get_id());
139 throw "not a std::exception";
jb::config_attribute< thread_config, jb::cpu_set > affinity
jb::config_attribute< thread_config, bool > ignore_setup_errors
Hold the configuration to initialize threads.
static cpu_set parse(std::string const &value)
Interpret value as a cpu set in list format.
jb::config_attribute< thread_config, std::string > name
BOOST_AUTO_TEST_CASE(launch_thread_basic)
void launch_thread(std::thread &t, thread_config const &config, Function &&f, A &&... a)
Create a new thread, configure it as desired, and then call a user-defined function.