#include <ace/Free_List.h>
template<class T, class ACE_LOCK> class ACE_Locked_Free_List : public ACE_Free_List<T> {
public:
ACE_Locked_Free_List ( int mode = ACE_FREE_LIST_WITH_POOL, size_t prealloc = ACE_DEFAULT_FREE_LIST_PREALLOC, size_t lwm = ACE_DEFAULT_FREE_LIST_LWM, size_t hwm = ACE_DEFAULT_FREE_LIST_HWM, size_t inc = ACE_DEFAULT_FREE_LIST_INC );
virtual ~ACE_Locked_Free_List (void);
virtual void add (T *element);
virtual T *remove (void);
virtual size_t size (void);
virtual void resize (size_t newsize);
protected:
virtual void alloc (size_t n);
virtual void dealloc (size_t n);
int mode_;
T *free_list_;
size_t lwm_;
size_t hwm_;
size_t inc_;
size_t size_;
ACE_LOCK mutex_;
private:
inline ACE_UNIMPLEMENTED_FUNC ( ACE_Locked_Free_List (const ACE_Locked_Free_List<T, ACE_LOCK> &) );
};
get_next
and set_next
method. It maintains a mutex so the freelist can be used in
a multithreaded program .
ACE_Locked_Free_List (
int mode = ACE_FREE_LIST_WITH_POOL,
size_t prealloc = ACE_DEFAULT_FREE_LIST_PREALLOC,
size_t lwm = ACE_DEFAULT_FREE_LIST_LWM,
size_t hwm = ACE_DEFAULT_FREE_LIST_HWM,
size_t inc = ACE_DEFAULT_FREE_LIST_INC
);
mode
(i.e., ACE_FREE_LIST_WITH_POOL or
ACE_PURE_FREE_LIST), a count of the number of nodes to
prealloc
, a low and high water mark (lwm
and hwm
) that
indicate when to allocate more nodes, an increment value (inc
)
that indicates how many nodes to allocate when the list must
grow.
virtual ~ACE_Locked_Free_List (void);
virtual void add (T *element);
virtual T *remove (void);
inc
new elements if the size is at or below the low water mark.
virtual size_t size (void);
virtual void resize (size_t newsize);
newsize
.
inline ACE_UNIMPLEMENTED_FUNC (
ACE_Locked_Free_List (const ACE_Locked_Free_List<T, ACE_LOCK> &)
);