Prev Next

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
A Fast Multi-Threading Memory Allocator

# include <cppad/thread_alloc.hpp>

The C++ new and delete operators are thread safe, but this means that a thread may have to wait for a lock on these operations. Once memory is obtained for a thread, the thread_alloc memory allocator keeps that memory available for the thread so that it can be re-used without waiting for a lock. All the CppAD memory allocations use this utility. The free_available function should be used to return memory to the system (once it is no longer required by a thread).

The routines in sections below are defined by cppad/thread_alloc.hpp. This file is included by cppad/cppad.hpp, but it can also be included separately with out the rest of the CppAD.

thread_alloc.cppFast Multi-Threading Memory Allocator: Example and Test
ta_parallel_setupSetup thread_alloc For Use in Multi-Threading Environment
ta_num_threadsGet Number of Threads
ta_in_parallelIs The Current Execution in Parallel Mode
ta_thread_numGet the Current Thread Number
ta_get_memoryGet At Least A Specified Amount of Memory
ta_return_memoryReturn Memory to thread_alloc
ta_free_availableFree Memory Currently Available for Quick Use by a Thread
ta_hold_memoryControl When Thread Alloc Retains Memory For Future Use
ta_inuseAmount of Memory a Thread is Currently Using
ta_availableAmount of Memory Available for Quick Use by a Thread
ta_create_arrayAllocate An Array and Call Default Constructor for its Elements
ta_delete_arrayDeallocate An Array and Call Destructor for its Elements
ta_free_allFree All Memory That Was Allocated for Use by thread_alloc

Input File: omh/thread_alloc.omh