2009 March 6th Friday (三月 六日 金曜日)
来源:互联网 发布:ntfs for mac 破解版 编辑:程序博客网 时间:2024/03/28 22:44
There is a demo of event queue implement.
//evt.cpp
#include <iostream>
using namespace std;
#define SIG_ABRT 1
#define SIG_STOP 2
#define SIG_KILL 3
#define SIG_CHLD 4
#define SIG_MAX 5
struct _EvtEntry {
int event;
struct _EvtEntry *next;
};
typedef struct _EvtEntry EvtEntry;
class EvtQueue {
private:
int event_cnt; // the count events.
EvtEntry *head;
EvtEntry *tail;
public:
EvtQueue();
~EvtQueue();
void AppendEvt(int evt);
void AddEvt(int evt);
int RemoveEvt();
int getEvtCnt();
};
EvtQueue::EvtQueue(){
event_cnt = 0;
head = NULL;
tail = NULL;
}
EvtQueue::~EvtQueue() {
if (event_cnt > 0) {
for (int i = 0; i < event_cnt; i++)
RemoveEvt();
head = NULL;
tail = NULL;
event_cnt = 0;
}
}
void EvtQueue::AppendEvt(int evt) {
EvtEntry *pEvt = new EvtEntry();
if (pEvt) {
// initialization
pEvt->event = evt;
pEvt->next = NULL;
// append to the event queue
// empty queue
if (!head && !tail) {
head = pEvt;
tail = pEvt;
}
else
tail->next = pEvt;
event_cnt++;
}
}
void EvtQueue::AddEvt(int evt) {
// search the event if exist
for (EvtEntry *p = head; p; p = p->next) {
if (p->event = evt)
break;
}
// no found
if (!p) {
EvtEntry *pEvt = new EvtEntry();
if (pEvt) {
// initialization
pEvt->event = evt;
pEvt->next = NULL;
// append to the event queue
// empty queue
if (!head && !tail) {
head = pEvt;
tail = pEvt;
}
else
tail->next = pEvt;
event_cnt++;
}
}
}
int EvtQueue::RemoveEvt() {
EvtEntry *pEvt = NULL;
// get an event
pEvt = head;
head = head->next;
event_cnt--;
int evt = pEvt->event;
delete pEvt;
return evt;
}
int EvtQueue::getEvtCnt() {
return event_cnt;
}
char* sig_msg(int evt) {
static char *msg[SIG_MAX] = {
"signal abort",
"signal stop",
"signal kill",
"signal child",
"unknown signal"
};
if ((evt <= 0) || (evt >= SIG_MAX))
return msg[SIG_MAX];
else
return msg[evt];
}
- 2009 March 6th Friday (三月 六日 金曜日)
- March 6th Tuesday (三月 六日 火曜日)
- 2009 March 13th Friday (三月 十三日 金曜日)
- 2009 March 20th Friday (三月 二十日 金曜日)
- 2009 March 27th Friday (三月 二十七日 金曜日)
- March 16th Friday (三月 十六日 金曜日)
- 2008 March 6th Thursday (三月 六日 木曜日
- March 23th Friday (三月 二十三日 金曜日)
- 2008 March 7th Friday (三月 七日 金曜日)
- February 6th Friday 2009 (二月 六日 金曜日)
- April 6th Friday (四月 六日 金曜日)
- July 6th Friday (七月 六日 金曜日)
- March 9th Friday (三月 八日 木曜日)
- 2008 March 21th Friday (三月 二十一日 金曜日)
- March 2nd Friday (三月 二日 金曜日)
- March 19th Friday 2010
- March 26th Friday 2010
- 2009 March 4th Wednesday (三月 四日 水曜日)
- 2009 March 2nd Monday (三月 二日 月曜日)
- 2009 March 3nd Tuesday (三月 三日 火曜日)
- 2009 March 4th Wednesday (三月 四日 水曜日)
- Linux C 函数参考
- 2009 March 5th Thursday (三月 五日 木曜日)
- 2009 March 6th Friday (三月 六日 金曜日)
- 2009 March 9th Monday (三月 九日 月曜日)
- iptrace占用/dev/bpf0导致tcpdump报 BIOCSETIF: en1: Do not specify an existing file
- 2009 March 10th Tuesday (三月 十日 火曜日)
- 2009 March 11th Wednesday (三月 十一日 水曜日)
- 2009 March 12th Thursday (三月 十二日 木曜日)
- 解除当前设置不允许下载该文件
- 2009 March 13th Friday (三月 十三日 金曜日)
- 2009 March 16th Monday (三月 十六日 月曜日)