table of contents
other versions
- wheezy-backports 15.26-3~bpo70+1
- jessie 15.26-3
- testing 16.9-1
- unstable 17.1-1
Threading(3) | globus_common | Threading(3) |
NAME¶
Threading - Portable Thread Abstraction.Modules¶
Mutual Exclusion
Data Structures¶
union globus_thread_t
Macros¶
#define GLOBUS_THREAD_CANCEL_DISABLE 0
Typedefs¶
typedef void(* globus_thread_key_destructor_func_t )(void *value)
Functions¶
int globus_thread_set_model (const char *model)
Detailed Description¶
Portable Thread Abstraction.Macro Definition Documentation¶
#define GLOBUS_THREAD_CANCEL_DISABLE 0¶
Disable thread cancellation value. See Also:globus_thread_setcancelstate()
#define GLOBUS_THREAD_CANCEL_ENABLE 1¶
Enable thread cancellation value. See Also:globus_thread_setcancelstate()
Function Documentation¶
globus_bool_t globus_i_am_only_thread (void)¶
Determine if threads are supported. The globus_i_am_only_thread() function determines whether multiple threads may be running in this process. Returns:The globus_i_am_only_thread() function
returns GLOBUS_TRUE if the current thread model is the 'none' thread model;
GLOBUS_FALSE otherwise.
int globus_thread_cancel (globus_thread_tthr)¶
Cancel a thread. The globus_thread_cancel() function cancels the thread with the identifier thr if it is still executing. If it is running with a cancellation cleanup stack, the functions in that stack are executed. The target thread's cancel state determines when the cancellation is delivered. Parameters:thr The id of the thread to
cancel
Returns:
On success, the globus_thread_cancel()
function delivers the cancellation to the target thread and returns
GLOBUS_SUCCESS. If an error occurs, globus_thread_cancel() returns an
implementation-specific non-zero error value.
void* globus_thread_cancellable_func (void *(*)(void *)func, void *arg, void(*)(void *)cleanup_func, void *cleanup_arg, globus_bool_texecute_cleanup)¶
Execute a function with thread cleanup in case of cancellation. The globus_thread_cancellable_func() function provides an interface to POSIX thread cancellation points that does not rely on preprocessor macros. It is roughly equivalent topthread_cleanup_push(cleanup_func, cleanup_arg); (*func)(arg); pthread_cleanup_pop(execute_cleanup)Parameters:
func Pointer to a function which may be
cancelled.
arg Parameter to the func function.
cleanup_func Pointer to a function to execute if thread cancellation
occurs during func.
cleanup_arg Parameter to the cleanup_func function.
execute_cleanup Flag indicating whether the function pointed to by
cleanup_func should be executed after func completes even if it
is not cancelled.
Returns:
globus_thread_cancellable_func()
returns the value returned by func.
int globus_thread_create (globus_thread_t *thread, globus_threadattr_t *attr, globus_thread_func_tfunc, void *user_arg)¶
Create a new thread. The globus_thread_create() function creates a new thread of execution in the current process to run the function pointed to by the func parameter passed the user_arg value as its only parameter. This new thread will be detached, so that storage associated with the thread will be automatically reclaimed by the operating system. A thread identifier will be copied to the value pointed by the thread parameter if it is non-NULL. The caller may use this thread identifier to signal or cancel this thread. The attr paramter is ignored by this function. If the 'none' threading model is used by an application, then this function will always fail. One alternative that will work both with and without threads is to use the functions in the Globus Callback API . Parameters:thread Pointer to a variable to contain
the new thread's identifier.
attr Ignored
func Pointer to a function to start in the new thread.
user_arg Argument to the new thread's function.
Returns:
On success, globus_thread_create() will
start a new thread, invoking (*func)(user_arg), modify the value pointed to by
the thread parameter to contain the new thread's identifier and return
GLOBUS_SUCCESS. If an error occurs, then the value of thread is
undefined and globus_thread_create() returns an implementation-specific
non-zero error value.
globus_bool_t globus_thread_equal (globus_thread_tthread1, globus_thread_tthread2)¶
Check whether thread identifiers match. The globus_thread_equal() function checks whether the thread identifiers passed as the thread1 and thread2 parameters refer to the same thread. If so, globus_thread_equal() returns GLOBUS_TRUE; otherwise GLOBUS_FALSE. Parameters:thread1 Thread identifier to compare.
thread2 Thread identifier to compare.
Return values:
GLOBUS_TRUE thread1 and thread2 refer
to the same thread.
GLOBUS_TRUE thread1 and thread2 do not refer to the same thread.
void globus_thread_exit (void *value)¶
Terminate the current thread. The globus_thread_exit() terminates the current thread with the value passed to it. This function does not return.int globus_thread_kill (globus_thread_tthread, intsig)¶
Send a signal to a thread. The globus_thread_kill() function sends the signal specified by the sig number to the thread whose ID matches the thread parameter. Depending on the signal mask of that thread, this may result in a signal being delivered or not, and depending on the process's signal actions, a signal handler, termination, or no operation will occur in that thread. Parameters:thread The thread identifier of the
thread to signal.
sig The signal to send to the thread.
Returns:
On success, globus_thread_kill() queues
the signal for delivery to the specified thread and returns GLOBUS_SUCCESS. If
an error occurs, globus_thread_kill() returns an
implementation-specific non-zero error value.
globus_bool_t globus_thread_preemptive_threads (void)¶
Indicate whether the active thread model supports preemption. Returns:The globus_thread_preemptive_threads()
function returns GLOBUS_TRUE if the current thread model supports thread
preemption; otherwise it returns GLOBUS_FALSE.
globus_thread_t globus_thread_self (void)¶
Determine the current thread's ID. The globus_thread_self() function returns the thread identifier of the current thread. This value is unique among all threads which are running at any given time. Returns:The globus_thread_self() function
returns the current thread's ID.
int globus_thread_set_model (const char *model)¶
Select threading model for an application. The globus_thread_set_model() function selects which runtime model the current application will use. By default, the Globus runtime uses a non-threaded model. Additional models may be available based on system support: pthread, or windows. This function must be called prior to activating any globus module, as it changes how certain functions (like globus_mutex_lock() and globus_cond_wait()) behave. This function overrides the value set by the GLOBUS_THREAD_MODEL environment variable. The globus_thread_set_model() function will fail if a Globus module has been activated already. Parameters:model The name of the thread model to
use. Depending on operating system capabilities, this may be 'none',
'pthread', 'windows', or some other custom thread implementation. The
corresponding libtool module 'libglobus_thread_pthread.la' or
'libglobus_thread_windows.la' must be installed on the system for it to be
used.
Returns:
On success, globus_thread_set_model()
sets the name of the thread model to use and returns GLOBUS_SUCCESS. If an
error occurs, then globus_thread_set_model() returns
GLOBUS_FAILURE.
int globus_thread_setcancelstate (intstate, int *oldstate)¶
Set the thread's cancellable state. The globus_thread_setcancelstate() function sets the current cancellation state to either GLOBUS_THREAD_CANCEL_DISABLE or GLOBUS_THREAD_CANCEL_ENABLE, do control whether globus_thread_cancel() is able to cancel this thread. Parameters:state The desired cancellation state.
If the value is GLOBUS_THREAD_CANCEL_DISABLE, then cancellation will be
disabled for this thread. If the value is GLOBUS_THREAD_CANCEL_ENABLE, then
cancellation will be enabled for this thread.
oldstate A pointer to a value which will be set to the value of the
thread's cancellation state when this function call began. This may be NULL if
the caller is not interested in the previous value.
Returns:
On success, the
globus_thread_setcancelstate() function modifies the thread
cancellation state, modifies oldstate (if non-NULL) to the value of its
previous state, and returns GLOBUS_SUCCESS. If an error occurs,
globus_thread_setcancelstate() returns an implementation-specific
non-zero error value.
int globus_thread_sigmask (inthow, const sigset_t *new_mask, sigset_t *old_mask)¶
Modify the current thread's signal mask. The globus_thread_sigmask() function modifies the current thread's signal mask and returns the old value of the signal mask in the value pointed to by the old_mask parameter. The how parameter can be one of SIG_BLOCK, SIG_UNBLOCK, or SIG_SETMASK to control how the signal mask is modified. Parameters:how Flag indicating how to interpret
new_mask if it is non-NULL. If how is SIG_BLOCK, then all
signals in new_mask are blocked, as well as any which were previously
blocked. If how is SIG_UNBLOCK, then all signals in which were
previously blocked in new_mask are unblocked. If how is
SIG_SETMASK, then the old signal mask is replaced with the value of
new_mask.
new_mask Set of signals to block or unblock, based on the how
parameter.
old_mask A pointer to be set to the old signal mask associated with the
current thread.
Returns:
On success, globus_thread_sigmask()
modifies the signal mask, modifies the value pointed to by old_mask
with the signal mask prior to this function's execution and returns
GLOBUS_SUCCESS. If an error occurs, globus_thread_sigmask() returns an
implementation-specific non-zero error value.
void globus_thread_testcancel (void)¶
Thread cancellation point. The globus_thread_testcancel() function acts as a cancellation point for the current thread. If a thread has called globus_thread_cancel() and cancellation is enabled, this will cause the thread to be cancelled and any functions on the thread's cleanup stack to be executed. This function will not return if the thread is cancelled.void globus_thread_yield (void)¶
Yield execution to another thread. The globus_thread_yield() function yields execution to other threads which are ready for execution. The current thread may continue to execute if there are no other threads in the system's ready queue.Author¶
Generated automatically by Doxygen for globus_common from the source code.Mon Oct 5 2015 | Version 15.26 |