online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include <atomic> #include <thread> #include <iostream> #include <condition_variable> class WorkerControl { public: void Suspend() { sleep_ = true; }; void Resume() { sleep_ = false; cv_.notify_one(); }; void Exit() { exit_ = true; }; std::atomic_bool sleep_{ false }; std::condition_variable cv_{}; std::atomic_bool exit_{ false }; std::mutex mutex_{}; }; void Worker(WorkerControl& control) { std::unique_lock lk(control.mutex_); while (!control.exit_.load()) { if (!control.sleep_.load()) { std::cout << "."; std::this_thread::sleep_for(std::chrono::milliseconds(500)); // Do something } else { std::cout << "\n" << "enters sleep" << "\n"; control.cv_.wait(lk, [&control]() { return control.sleep_.load() == false; }); std::cout << "wakes up" << "\n"; } } std::cout << "\n" << "exits" << "\n"; } int main() { WorkerControl control{}; std::thread tr(Worker, std::ref(control)); // For example: std::this_thread::sleep_for(std::chrono::seconds(5)); // (Wait 5 secons) control.Suspend(); std::this_thread::sleep_for(std::chrono::seconds(3)); // (Wait 3 seconds) control.Resume(); std::this_thread::sleep_for(std::chrono::seconds(10)); // (Wait 10 seconds) control.Suspend(); std::this_thread::sleep_for(std::chrono::seconds(3)); // (Wait 3 seconds) control.Resume(); std::this_thread::sleep_for(std::chrono::seconds(5)); // (Wait 5 seconds) control.Exit(); tr.join(); }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue