diff --git a/Assignment/Task 3/main.cpp b/Assignment/Task 3/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..616bcd729324e43fa536e7d3cfb3600b922c1658 --- /dev/null +++ b/Assignment/Task 3/main.cpp @@ -0,0 +1,34 @@ +#include <iostream> +#include "scheduler.h" + +scheduler s; + +int main() { + auto lambda1 = [](void* arg) { + fiber* f = static_cast<fiber*>(arg); + std::cout << "fiber 1 before" << std::endl; + f->finish(); + f->yield(); + std::cout << "fiber 1 after" << std::endl; + s.fiber_exit(); + }; + + auto lambda2 = [](void* arg) { + fiber* f = static_cast<fiber*>(arg); + std::cout << "fiber 2" << std::endl; + f->finish(); + s.fiber_exit(); + }; + + fiber f1(lambda1, &f1); + fiber f2(lambda2, &f2); + + s.spawn(&f1); + s.spawn(&f2); + + s.do_it(); + + return 0; +} + +