您的位置:首页 > 其它

Dlib库【4】——定时器Timer,线程对象

2017-05-18 16:11 183 查看
配置Dlib环境:  链接


1.定时器Timer

Timer可以规律地循环调用特定的功能函数

//可以定时地开启线程(例如过30ms打开第二个线程而不把主线程阻塞住?)

// 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 timer object from the dlib C++ Library.

The timer is an object that calls some user specified member function at regular
intervals from another thread.
*/

#include <dlib/timer.h>
#include <dlib/misc_api.h> // for dlib::sleep
#include <iostream>

using namespace dlib;
using namespace std;

// ----------------------------------------------------------------------------------------

class timer_example
{
public:
void action_function()
{
// print out a message so we can see that this function is being triggered
cout << "action_function() called" << endl;
}
};

// ----------------------------------------------------------------------------------------

int main()
{
//直观上timer的主要作用是可以精确的过一段时间再开第二个线程
timer_example e;

// Here we construct our timer object.  It needs two things.  The second argument is
// the member function it is going to call at regular intervals and the first argument
// is the object instance it will call that member function on.
timer<timer_example> t(e, &timer_example::action_function);

// Set the timer object to trigger every second
t.set_delay_time(1000);

// Start the timer.  It will start calling the action function 1 second from this call
// to start.
t.start();

// Sleep for 10 seconds before letting the program end.
dlib::sleep(10000);

//dlib::sleep(10000);
// The timer will destruct itself properly and stop calling the action_function.
}

// ----------------------------------------------------------------------------------------




2.线程对象

pause可以暂停,直观上没有看出特别重要的作用…………之后如果用到了再来丰润吧

// 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 <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.
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: