59 lines
1.0 KiB
C
59 lines
1.0 KiB
C
|
|
#ifndef _MBASE_QUEUELIST_H_
|
|||
|
|
#define _MBASE_QUEUELIST_H_
|
|||
|
|
|
|||
|
|
#include "lock_list.h"
|
|||
|
|
#include "container/vector.h"
|
|||
|
|
|
|||
|
|
namespace container
|
|||
|
|
{
|
|||
|
|
template <typename T>
|
|||
|
|
class QueueList :
|
|||
|
|
public LockList<T>
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef LockList<T> Inherited;
|
|||
|
|
typedef QueueList<T> ListClass;
|
|||
|
|
private:
|
|||
|
|
Vector<T> append_list_; //<2F><><EFBFBD><EFBFBD><EFBFBD><D7B7><EFBFBD>б<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>ڵ<EFBFBD><DAB5><EFBFBD>flush<73><68>tryFlush<73>DZ<EFBFBD><C7B1>ύ<EFBFBD><E1BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
inline void append(const T& data)
|
|||
|
|
{
|
|||
|
|
this->lock();
|
|||
|
|
append_list_.add(data);
|
|||
|
|
this->unlock();
|
|||
|
|
}
|
|||
|
|
inline void appendList(Vector<T> &list)
|
|||
|
|
{
|
|||
|
|
this->lock();
|
|||
|
|
append_list_.addArray(list, list.count());
|
|||
|
|
this->unlock();
|
|||
|
|
}
|
|||
|
|
inline void appendArray(T* data, int length)
|
|||
|
|
{
|
|||
|
|
this->lock();
|
|||
|
|
append_list_.addArray(data, length);
|
|||
|
|
this->unlock();
|
|||
|
|
}
|
|||
|
|
//<2F><>ȡ<C8A1><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
inline int appendCount()
|
|||
|
|
{
|
|||
|
|
return append_list_.count();
|
|||
|
|
}
|
|||
|
|
//<2F>ύ<EFBFBD><E1BDBB>append<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
inline void flush()
|
|||
|
|
{
|
|||
|
|
this->lock();
|
|||
|
|
if ( append_list_.count() > 0 )
|
|||
|
|
{
|
|||
|
|
this->addList(append_list_);
|
|||
|
|
append_list_.trunc(0);
|
|||
|
|
}
|
|||
|
|
this->unlock();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|