int main(int, char**) { { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f1)); std::this_thread::sleep_for(WaitTime); m.unlock(); for (auto& t : v) t.join(); } { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f2)); std::this_thread::sleep_for(WaitTime + Tolerance); m.unlock(); for (auto& t : v) t.join(); } return 0; }
int main() { #if _LIBCPP_STD_VER > 11 { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f1)); std::this_thread::sleep_for(ms(250)); m.unlock(); for (auto& t : v) t.join(); } { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f2)); std::this_thread::sleep_for(ms(300)); m.unlock(); for (auto& t : v) t.join(); } #endif // _LIBCPP_STD_VER > 11 }
int main() { { m.lock(); std::thread t(f1); std::this_thread::sleep_for(WaitTime); m.unlock(); t.join(); } { m.lock(); std::thread t(f2); std::this_thread::sleep_for(WaitTime + Tolerance); m.unlock(); t.join(); } }
void f() { time_point t0 = Clock::now(); m.lock(); time_point t1 = Clock::now(); m.unlock(); ns d = t1 - t0 - ms(250); assert(d < ms(50)); // within 50ms }
int main() { #if _LIBCPP_STD_VER > 11 m.lock(); std::thread t(f); std::this_thread::sleep_for(ms(250)); m.unlock(); t.join(); #endif // _LIBCPP_STD_VER > 11 }
int main() { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f)); std::this_thread::sleep_for(ms(250)); m.unlock(); for (auto& t : v) t.join(); }
int main() { m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f)); std::this_thread::sleep_for(WaitTime); m.unlock(); for (auto& t : v) t.join(); m.lock_shared(); for (auto& t : v) t = std::thread(g); std::thread q(f); std::this_thread::sleep_for(WaitTime); m.unlock_shared(); for (auto& t : v) t.join(); q.join(); }
int main() { #if _LIBCPP_STD_VER > 11 m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f)); std::this_thread::sleep_for(ms(250)); m.unlock(); for (auto& t : v) t.join(); m.lock_shared(); for (auto& t : v) t = std::thread(g); std::thread q(f); std::this_thread::sleep_for(ms(250)); m.unlock_shared(); for (auto& t : v) t.join(); q.join(); #endif // _LIBCPP_STD_VER > 11 }