-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathQueue.h
More file actions
53 lines (43 loc) · 1.04 KB
/
Queue.h
File metadata and controls
53 lines (43 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// Queue.h
// MessageLoop
//
// Created by Lymons on 14-3-20.
// Copyright (c) 2014年 Lymons. All rights reserved.
//
#ifndef __MessageLoop__Queue__
#define __MessageLoop__Queue__
#include <iostream>
#include <queue>
#include <map>
#include <thread>
//#include <time.h>
using namespace std;
#include "Message.h"
struct MessageCmp
{
bool operator() (Message* ma, Message* mb)
{
// 按照发送时间升序排列
return ma->GetSendTime() > mb->GetSendTime();
}
};
class Queue
{
public:
Queue();
void Recycle(Message* m);
Message* Next();
bool Push(Message* m);
void Push(queue<Message*>& q);
private:
Message* Pop();
private:
priority_queue<Message*, vector<Message*>, MessageCmp> mMessageQueue;
//queue<Message*> mMessageQueue;
queue<Message*> mPriorityMessages;
//multimap<time_t, Message*, less<time_t>> mMessageSet;
typedef map<thread::id, pair<bool, int>*> PriorityManager;
PriorityManager mPriorityMgr;
};
#endif /* defined(__MessageLoop__Queue__) */