diff --git a/Assignment/Task 2/main.cpp b/Assignment/Task 2/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..311ea457808551a1a5efd2950185d1fb9643aaf0 --- /dev/null +++ b/Assignment/Task 2/main.cpp @@ -0,0 +1,41 @@ +#include <iostream> +#include "scheduler.h" + +scheduler s; +int shared_data = 10; + +void func1(void* arg) { + std::cout << "Entering Fiber1" << std::endl; + std::cout << "fiber 1 address: " << arg << std::endl; + std::cout << "fiber 1: " << shared_data << std::endl; + shared_data++; + s.fiber_exit(); // Exit the fiber + std::cout << "Exit of Fiber1" << std::endl; +} + +void func2(void* arg) { + std::cout << "fiber 2 address: " << arg << std::endl; + std::cout << "fiber 2: " << shared_data << std::endl; // This should now print 11 + s.fiber_exit(); // Exit the fiber +} + +int main() { + + try { + std::cout << " Starting funcs" << std::endl; + fiber f1(&func1, nullptr); + std::cout << "Shared data:" << shared_data << std::endl; + std::cout << "Between" << std::endl; + fiber f2(&func2, nullptr); + std::cout <<"Funcs Done" << std::endl; + s.spawn(&f1); + s.spawn(&f2); + std::cout <<"Spawning" << std::endl; + s.do_it(); // Execute the fibers + std::cout << "HELLO" <<std::endl; + } catch (const std::exception& e) { + std::cerr << "Exception Caught:" <<e.what() <<std::endl; + } + return 0; +} +