1bec223a9SCalixte Denizet #include <sys/types.h> 2bec223a9SCalixte Denizet #include <thread> 3bec223a9SCalixte Denizet #include <unistd.h> 4bec223a9SCalixte Denizet 5bec223a9SCalixte Denizet template <typename T> launcher(T func)6bec223a9SCalixte Denizetvoid launcher(T func) { 7*0da37bedSCalixte Denizet auto t1 = std::thread(func); 8*0da37bedSCalixte Denizet auto t2 = std::thread(func); 9bec223a9SCalixte Denizet 10*0da37bedSCalixte Denizet t1.join(); 11*0da37bedSCalixte Denizet t2.join(); 12bec223a9SCalixte Denizet } 13bec223a9SCalixte Denizet g()14*0da37bedSCalixte Denizetvoid g() {} 15bec223a9SCalixte Denizet f()16bec223a9SCalixte Denizetvoid f() { 17bec223a9SCalixte Denizet fork(); 18bec223a9SCalixte Denizet launcher<>(g); 19bec223a9SCalixte Denizet } 20bec223a9SCalixte Denizet main()21bec223a9SCalixte Denizetint main() { 22bec223a9SCalixte Denizet launcher<>(f); 23bec223a9SCalixte Denizet 24bec223a9SCalixte Denizet return 0; 25bec223a9SCalixte Denizet } 26