#include <xtd/threading/interlocked>
#include <xtd/threading/thread>
#include <xtd/threading/thread_interrupted_exception>
#include <xtd/console>
#include <xtd/startup>
 
 
namespace timeout_example {
  class stay_awake {
  public:
    stay_awake() = default;
    
    void sleep_switch(bool value) {
      sleep_switch_ = value;
    }
    
    void thread_method() {
      console::write_line("new_thread is executing thread_method.");
      while(!sleep_switch_) {
        
        
        thread::spin_wait(10000000);
      }
      try {
        console::write_line("new_thread going to sleep.");
        
        
        
        thread::sleep(timeout::infinite);
        console::write_line("new_thread cannot go to sleep - "
                            "interrupted by main thread.");
      }
    }
    
  private:
    bool sleep_switch_ = false;
  };
  
  class thread_interrupt {
  public:
    static void main() {
      auto stay_awake = timeout_example::stay_awake {};
      auto new_thread = 
thread {
thread_start {stay_awake, &timeout_example::stay_awake::thread_method}};
 
      thread::sleep(10);
      
      
      
      
      
      new_thread.interrupt();
      console::write_line("main thread calls interrupt on new_thread.");
      
      
      stay_awake.sleep_switch(true);
      
      
      new_thread.join();
    }
  };
}
 
startup_(timeout_example::thread_interrupt::main);
 
 
The exception that is thrown when a Thread is interrupted while it is in a waiting state.
Definition thread_interrupted_exception.hpp:25
 
Creates and controls a thread, sets its priority, and gets its status.
Definition thread.hpp:43
 
void start()
Causes the operating system to change the state of the current instance to xtd::threading::thread_sta...
 
#define startup_(main_method)
Defines the entry point to be called when the application loads. Generally this is set either to the ...
Definition startup.hpp:175
 
delegate< void()> thread_start
Represents the method that executes on a xtd::threading::thread.
Definition thread_start.hpp:24
 
The xtd::threading namespace provides classes and interfaces that enable multithreaded programming....
Definition abandoned_mutex_exception.hpp:11
 
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10