You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
concurrentqueue/benchmarks/dlib/threads/thread_function_extension_a...

147 lines
4.4 KiB
C++

// Copyright (C) 2007 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_THREAD_FUNCTIOn_ABSTRACT_
#ifdef DLIB_THREAD_FUNCTIOn_ABSTRACT_
#include "threads_kernel_abstract.h"
namespace dlib
{
// ----------------------------------------------------------------------------------------
class thread_function
{
/*!
WHAT THIS OBJECT REPRESENTS
This object represents a thread on a global C++ function or function
object. That is, it allows you to run a function in its own thread.
!*/
public:
template <typename F>
thread_function (
F funct
);
/*!
ensures
- #*this is properly initialized
- the function funct has been started in its own thread
throws
- std::bad_alloc
- dlib::thread_error
the constructor may throw this exception if there is a problem
gathering resources to create threading objects.
!*/
template <typename F, typename T1>
thread_function (
F funct,
T1 arg1
);
/*!
ensures
- #*this is properly initialized
- A thread has been created and it will call funct(arg1)
throws
- std::bad_alloc
- dlib::thread_error
the constructor may throw this exception if there is a problem
gathering resources to create threading objects.
!*/
template <typename F, typename T1, typename T2>
thread_function (
F funct,
T1 arg1,
T2 arg2
);
/*!
ensures
- #*this is properly initialized
- A thread has been created and it will call funct(arg1, arg2)
throws
- std::bad_alloc
- dlib::thread_error
the constructor may throw this exception if there is a problem
gathering resources to create threading objects.
!*/
template <typename F, typename T1, typename T2, typename T3>
thread_function (
F funct,
T1 arg1,
T2 arg2,
T3 arg3
);
/*!
ensures
- #*this is properly initialized
- A thread has been created and it will call funct(arg1, arg2, arg3)
throws
- std::bad_alloc
- dlib::thread_error
the constructor may throw this exception if there is a problem
gathering resources to create threading objects.
!*/
template <typename F, typename T1, typename T2, typename T3, typename T4>
thread_function (
F funct,
T1 arg1,
T2 arg2,
T3 arg3,
T4 arg4
);
/*!
ensures
- #*this is properly initialized
- A thread has been created and it will call funct(arg1, arg2, arg3, arg4)
throws
- std::bad_alloc
- dlib::thread_error
the constructor may throw this exception if there is a problem
gathering resources to create threading objects.
!*/
~thread_function (
);
/*!
ensures
- all resources allocated by *this have been freed.
- blocks until is_alive() == false
!*/
bool is_alive (
) const;
/*!
ensures
- if (this object's thread has yet to terminate) then
- returns true
- else
- returns false
!*/
void wait (
) const;
/*!
ensures
- if (is_alive() == true) then
- blocks until this object's thread terminates
!*/
private:
// restricted functions
thread_function(thread_function&); // copy constructor
thread_function& operator=(thread_function&); // assignment operator
};
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_THREAD_FUNCTIOn_ABSTRACT_