Initial Commit - Lesson 31 (Commit #1)
This commit is contained in:
190
Plugins/GameLiftServerSDK/ThirdParty/concurrentqueue/benchmarks/dlib/timer/timer_abstract.h
vendored
Normal file
190
Plugins/GameLiftServerSDK/ThirdParty/concurrentqueue/benchmarks/dlib/timer/timer_abstract.h
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
// Copyright (C) 2005 Davis E. King (davis@dlib.net)
|
||||
// License: Boost Software License See LICENSE.txt for the full license.
|
||||
#undef DLIB_TIMER_KERNEl_ABSTRACT_
|
||||
#ifdef DLIB_TIMER_KERNEl_ABSTRACT_
|
||||
|
||||
#include "../threads.h"
|
||||
|
||||
namespace dlib
|
||||
{
|
||||
|
||||
template <
|
||||
typename T
|
||||
>
|
||||
class timer
|
||||
{
|
||||
/*!
|
||||
INITIAL VALUE
|
||||
is_running() == false
|
||||
delay_time() == 1000
|
||||
action_object() == The object that is passed into the constructor
|
||||
action_function() == The member function pointer that is passed to
|
||||
the constructor.
|
||||
|
||||
WHAT THIS OBJECT REPRESENTS
|
||||
This object represents a timer that will call a given member function
|
||||
(the action function) repeatedly at regular intervals and in its own
|
||||
thread.
|
||||
|
||||
Note that the delay_time() is measured in milliseconds but you are not
|
||||
guaranteed to have that level of resolution. The actual resolution
|
||||
is implementation dependent.
|
||||
|
||||
THREAD SAFETY
|
||||
All methods of this class are thread safe.
|
||||
!*/
|
||||
|
||||
public:
|
||||
|
||||
typedef void (T::*af_type)();
|
||||
|
||||
timer (
|
||||
T& ao,
|
||||
af_type af
|
||||
);
|
||||
/*!
|
||||
requires
|
||||
- af does not throw
|
||||
ensures
|
||||
- does not block.
|
||||
- #*this is properly initialized
|
||||
- #action_object() == ao
|
||||
- #action_function() == af
|
||||
(af is a member function pointer to a member in the class T)
|
||||
throws
|
||||
- std::bad_alloc
|
||||
- dlib::thread_error
|
||||
!*/
|
||||
|
||||
virtual ~timer (
|
||||
);
|
||||
/*!
|
||||
requires
|
||||
- is not called from inside the action_function()
|
||||
ensures
|
||||
- any resources associated with *this have been released
|
||||
- will not call the action_function() anymore.
|
||||
- if (the action function is currently executing) then
|
||||
- blocks until it finishes
|
||||
!*/
|
||||
|
||||
void clear(
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- #*this has its initial value
|
||||
- does not block
|
||||
throws
|
||||
- std::bad_alloc or dlib::thread_error
|
||||
If either of these exceptions are thrown then #*this is unusable
|
||||
until clear() is called and succeeds.
|
||||
!*/
|
||||
|
||||
af_type action_function (
|
||||
) const;
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- returns a pointer to the member function of action_object() that is
|
||||
called by *this.
|
||||
!*/
|
||||
|
||||
const T& action_object (
|
||||
) const;
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- returns a const reference to the object used to call the member
|
||||
function pointer action_function()
|
||||
!*/
|
||||
|
||||
T& action_object (
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- returns a non-const reference to the object used to call the member
|
||||
function pointer action_function()
|
||||
!*/
|
||||
|
||||
bool is_running (
|
||||
) const;
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- if (*this is currently scheduled to call the action_function()) then
|
||||
- returns true
|
||||
- else
|
||||
- returns false
|
||||
!*/
|
||||
|
||||
unsigned long delay_time (
|
||||
) const;
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- returns the amount of time, in milliseconds, that *this will wait between
|
||||
the return of one call to the action_function() and the beginning of the
|
||||
next call to the action_function().
|
||||
!*/
|
||||
|
||||
void set_delay_time (
|
||||
unsigned long milliseconds
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- #delay_time() == milliseconds
|
||||
throws
|
||||
- std::bad_alloc or dlib::thread_error
|
||||
If either of these exceptions are thrown then #is_running() == false
|
||||
but otherwise this function succeeds
|
||||
!*/
|
||||
|
||||
void start (
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- does not block.
|
||||
- if (is_running() == false) then
|
||||
- #is_running() == true
|
||||
- The action_function() will run in another thread.
|
||||
- The first call to the action_function() will occur in roughly
|
||||
delay_time() milliseconds.
|
||||
- else
|
||||
- this call to start() has no effect
|
||||
throws
|
||||
- dlib::thread_error or std::bad_alloc
|
||||
If this exception is thrown then #is_running() == false but
|
||||
otherwise this call to start() has no effect.
|
||||
!*/
|
||||
|
||||
void stop (
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- #is_running() == false
|
||||
- does not block.
|
||||
!*/
|
||||
|
||||
void stop_and_wait (
|
||||
);
|
||||
/*!
|
||||
ensures
|
||||
- #is_running() == false
|
||||
- if (the action function is currently executing) then
|
||||
- blocks until it finishes
|
||||
!*/
|
||||
|
||||
private:
|
||||
|
||||
// restricted functions
|
||||
timer(const timer<T>&); // copy constructor
|
||||
timer<T>& operator=(const timer<T>&); // assignment operator
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // DLIB_TIMER_KERNEl_ABSTRACT_
|
||||
|
||||
Reference in New Issue
Block a user