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 Buchvoid *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 Buchint 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