// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt /* This is an example illustrating the use of the threaded_object from the dlib C++ Library. This is a very simple example. It creates a single thread that just prints messages to the screen. */ #include #include "dlib/threads.h" #include "dlib/misc_api.h" // for dlib::sleep using namespace std; using namespace dlib; class my_object : public threaded_object { public: my_object() { // Start our thread going in the thread() function start(); } ~my_object() { // Tell the thread() function to stop. This will cause should_stop() to // return true so the thread knows what to do. stop(); // Wait for the thread to stop before letting this object destruct itself. // Also note, you are *required* to wait for the thread to end before // letting this object destruct itself. wait(); } private: void thread() { // This is our thread. It will loop until it is told that it should terminate. while (should_stop() == false) { cout << "hurray threads!" << endl; dlib::sleep(500); } } }; int main() { // Create an instance of our threaded object. my_object t; dlib::sleep(4000); // Tell the threaded object to pause its thread. This causes the // thread to block on its next call to should_stop(). t.pause(); dlib::sleep(3000); cout << "starting thread back up from paused state" << endl; // Tell the thread to unpause itself. This causes should_stop() to unblock // and to let the thread continue. t.start(); dlib::sleep(4000); // Let the program end. When t is destructed it will gracefully terminate your // thread because we have set the destructor up to do so. }