15,471
社区成员
发帖
与我相关
我的任务
分享
class Queue
{
public:
struct Item
{
virtual void Release() = 0;
virtual ~Item(){}
};
// 启用
bool Start(int maxItem = 10);
// 停用,并换醒所有GetItem正在等待的线程, deleteData为true时清除所有数据
bool Stop(bool deleteData = true);
// 添加,超过最大值时则等待,等待时被Stop换醒或timeout时则返回false
// timeout为-1时则无限等待
bool AddItem(Item* item, int timeout = -1);
// 获取,为空时则等待,等待时被Stop换醒或timeout时则返回NULL
Item* GetItem(int timeout = -1);
private:
std::vector<Item*> _items;
};