1*317c8bf8SMichael Buch #include <chrono>
2*317c8bf8SMichael Buch #include <cstdio>
3*317c8bf8SMichael Buch #include <thread>
4*317c8bf8SMichael Buch 
5*317c8bf8SMichael Buch struct Foo {
6*317c8bf8SMichael Buch   bool enable = true;
7*317c8bf8SMichael Buch   uint32_t offset = 0;
8*317c8bf8SMichael Buch 
usleep_helperFoo9*317c8bf8SMichael Buch   void usleep_helper(uint32_t usec) {
10*317c8bf8SMichael Buch     [this, &usec] {
11*317c8bf8SMichael Buch       puts("Break here in the helper");
12*317c8bf8SMichael Buch       std::this_thread::sleep_for(
13*317c8bf8SMichael Buch           std::chrono::duration<unsigned int, std::milli>(offset + usec));
14*317c8bf8SMichael Buch     }();
15*317c8bf8SMichael Buch   }
16*317c8bf8SMichael Buch };
17*317c8bf8SMichael Buch 
background_thread(void *)18*317c8bf8SMichael Buch void *background_thread(void *) {
19*317c8bf8SMichael Buch   Foo f;
20*317c8bf8SMichael Buch   for (;;) {
21*317c8bf8SMichael Buch     f.usleep_helper(2);
22*317c8bf8SMichael Buch   }
23*317c8bf8SMichael Buch }
24*317c8bf8SMichael Buch 
main()25*317c8bf8SMichael Buch int main() {
26*317c8bf8SMichael Buch   std::puts("First break");
27*317c8bf8SMichael Buch   std::thread main_thread(background_thread, nullptr);
28*317c8bf8SMichael Buch   Foo f;
29*317c8bf8SMichael Buch   for (;;) {
30*317c8bf8SMichael Buch     f.usleep_helper(1);
31*317c8bf8SMichael Buch   }
32*317c8bf8SMichael Buch }
33