diff options
author | nw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-07-12 09:12:05 +0000 |
---|---|---|
committer | nw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-07-12 09:12:05 +0000 |
commit | c2e7a5e285ae77ef3a470f6e86a25bf7bc7104a9 (patch) | |
tree | 178fd2a620cb623e7bc54f5bf8cff1e4de442945 /ace/Free_List.i | |
parent | f7a34252f0d89e795c60644afdfeebf7cc16f764 (diff) | |
download | ATCD-c2e7a5e285ae77ef3a470f6e86a25bf7bc7104a9.tar.gz |
Added a new class "ACE_Locked_Simple_Free_List".
Diffstat (limited to 'ace/Free_List.i')
-rw-r--r-- | ace/Free_List.i | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ace/Free_List.i b/ace/Free_List.i index e9447fe4ba5..76905b4635c 100644 --- a/ace/Free_List.i +++ b/ace/Free_List.i @@ -2,6 +2,34 @@ // Inserts an element onto the free list (if it isn't past the high water mark) +template <class T, class LOCK> ACE_INLINE T * +ACE_Locked_Simple_Free_List<T, LOCK>::remove () +{ + ACE_MT (ACE_GUARD_RETURN (LOCK, ace_mon, this->lock_, NULL)); + T *retv = this->head_; + if (retv != 0) + { + this->head_ = retv->get_next (); + this->size_ --; + } + return retv; +} + +template <class T, class LOCK> ACE_INLINE void +ACE_Locked_Simple_Free_List<T, LOCK>::add (T *mem) +{ + ACE_MT (ACE_GUARD (LOCK, ace_mon, this->lock_)); + mem->set_next (this->head_); + this->head_ = mem; + this->size_ ++; +} + +template <class T, class LOCK> ACE_INLINE size_t +ACE_Locked_Simple_Free_List<T, LOCK>::size () +{ + return this->size_; +} + template <class T, class LOCK> ACE_INLINE void ACE_Locked_Free_List<T, LOCK>::add (T *element) { |