Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

ACE_Cached_Allocator< T, ACE_LOCK > Class Template Reference

A fixed-size allocator that caches items for quicker access. More...

#include <Malloc_T.h>

Inheritance diagram for ACE_Cached_Allocator< T, ACE_LOCK >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Cached_Allocator< T, ACE_LOCK >:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Cached_Allocator (size_t n_chunks)
 ~ACE_Cached_Allocator (void)
 Clear things up.

void * malloc (size_t nbytes=sizeof(T))
virtual void * calloc (size_t nbytes, char initial_value= '\0')
virtual void * calloc (size_t n_elem, size_t elem_size, char initial_value= '\0')
void free (void *)
 Return a chunk of memory back to free list cache.


Private Attributes

char * pool_
ACE_Locked_Free_List< ACE_Cached_Mem_Pool_Node<
T >, ACE_LOCK > 
free_list_
 Maintain a cached memory free list.


Detailed Description

template<class T, class ACE_LOCK>
class ACE_Cached_Allocator< T, ACE_LOCK >

A fixed-size allocator that caches items for quicker access.

This class enables caching of dynamically allocated, fixed-sized classes. Notice that the sizeof (TYPE) must be greater than or equal to sizeof (void*) for this to work properly.

This class can be configured flexibly with different types of ACE_LOCK strategies that support the ACE_Thread_Mutex, ACE_Thread_Semaphore, ACE_Process_Mutex, and ACE_Process_Semaphore constructor API.

See also:
ACE_Dynamic_Cached_Allocator


Constructor & Destructor Documentation

template<class T, class ACE_LOCK>
ACE_Cached_Allocator< T, ACE_LOCK >::ACE_Cached_Allocator size_t    n_chunks
 

Create a cached memory pool with n_chunks chunks each with sizeof (TYPE) size.

template<class T, class ACE_LOCK>
ACE_Cached_Allocator< T, ACE_LOCK >::~ACE_Cached_Allocator void   
 

Clear things up.


Member Function Documentation

template<class T, class ACE_LOCK>
ACE_INLINE void * ACE_Cached_Allocator< T, ACE_LOCK >::calloc size_t    n_elem,
size_t    elem_size,
char    initial_value = '\0'
[virtual]
 

This method is a no-op and just returns 0 since the free list only works with fixed sized entities.

Reimplemented from ACE_New_Allocator.

template<class T, class ACE_LOCK>
ACE_INLINE void * ACE_Cached_Allocator< T, ACE_LOCK >::calloc size_t    nbytes,
char    initial_value = '\0'
[virtual]
 

Get a chunk of memory from free list cache, giving them initial_value. Note that nbytes is only checked to make sure that it's less or equal to sizeof T, and is otherwise ignored since calloc() always returns a pointer to an item of sizeof (T).

Reimplemented from ACE_New_Allocator.

template<class T, class ACE_LOCK>
ACE_INLINE void ACE_Cached_Allocator< T, ACE_LOCK >::free void *    [virtual]
 

Return a chunk of memory back to free list cache.

Reimplemented from ACE_New_Allocator.

template<class T, class ACE_LOCK>
ACE_INLINE void * ACE_Cached_Allocator< T, ACE_LOCK >::malloc size_t    nbytes = sizeof(T) [virtual]
 

Get a chunk of memory from free list cache. Note that nbytes is only checked to make sure that it's less or equal to sizeof T, and is otherwise ignored since malloc() always returns a pointer to an item of sizeof (T).

Reimplemented from ACE_New_Allocator.


Member Data Documentation

template<class T, class ACE_LOCK>
ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<T>, ACE_LOCK> ACE_Cached_Allocator< T, ACE_LOCK >::free_list_ [private]
 

Maintain a cached memory free list.

template<class T, class ACE_LOCK>
char* ACE_Cached_Allocator< T, ACE_LOCK >::pool_ [private]
 

Remember how we allocate the memory in the first place so we can clear things up later.


The documentation for this class was generated from the following files:
Generated on Wed Jan 14 22:42:05 2004 for ACE by doxygen1.2.18