class to be used as parent to provide checkpoints to inherited classes More...
#include <thread_cancellation.hpp>
Inherited by libdar::fichier, libdar::null_file, and libdar::tuyau.
Public Member Functions | |
thread_cancellation () | |
the constructor | |
virtual | ~thread_cancellation () |
the destructor | |
void | check_self_cancellation () const |
the checkpoint where is seen whether the current libdar call must abort | |
void | block_delayed_cancellation (bool mode) |
Static Public Member Functions | |
static void | init () |
mandatory initialization static method | |
static void | cancel (pthread_t tid, bool x_immediate, U_64 x_flag) |
marks the thread given in argument as to be canceled | |
static bool | cancel_status (pthread_t tid) |
gives the cancellation status of the given thread ID | |
static bool | clear_pending_request (pthread_t tid) |
abort the pending thread cancellation | |
static U_I | count () |
method for debugging/control purposes |
class to be used as parent to provide checkpoints to inherited classes
the class provides a checkpoints to inherited classes and a mechanism that let any libdar external code to ask the termination of a libdar call executing in a given thread. This does not imply the termination of the thread itself but it implies the return of the thread execution to the code that called libdar
Definition at line 65 of file thread_cancellation.hpp.
void libdar::thread_cancellation::block_delayed_cancellation | ( | bool | mode | ) |
by default delayed (non immediate) cancellation generate an specific exception it is possible for delayed cancellation only, do block such exceptions for a certain time
[in] | mode | can be set to true to block delayed cancellations |
static void libdar::thread_cancellation::cancel | ( | pthread_t | tid, | |
bool | x_immediate, | |||
U_64 | x_flag | |||
) | [static] |
marks the thread given in argument as to be canceled
[in] | tid | the thread ID of the thread where any libdar call must abort |
[in] | x_immediate | whether the cancellation must be as fast as possible or can take a |
[in] | x_flag | is a value to transmit to the Ethread_cancel exception used to cancel libdar's call stack little time to make a usable archive |
static bool libdar::thread_cancellation::cancel_status | ( | pthread_t | tid | ) | [static] |
gives the cancellation status of the given thread ID
[in] | tid | the thread to check |
void libdar::thread_cancellation::check_self_cancellation | ( | ) | const |
the checkpoint where is seen whether the current libdar call must abort
Euser_abort | is thrown if the thread the checkpoint is running from is marked as to be canceled. |
static bool libdar::thread_cancellation::clear_pending_request | ( | pthread_t | tid | ) | [static] |
abort the pending thread cancellation
static void libdar::thread_cancellation::init | ( | ) | [static] |
mandatory initialization static method
must be called once before any call to thread_cancellation class's methods