mirror of https://github.com/davisking/dlib.git
79 lines
1.8 KiB
C++
79 lines
1.8 KiB
C++
|
/*
|
||
|
|
||
|
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 <iostream>
|
||
|
#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.
|
||
|
}
|
||
|
|
||
|
|
||
|
|