mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
754da0ef3c
--HG-- extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%402199
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.
|
|
}
|
|
|
|
|
|
|