📄 intpointmap.h
字号:
/********************************************************************** FileName : IntPointMap.h Description : 整数-指针哈希映射类头文件 Version : 1.0 Date : 2003年7月1日 Author : 刘荣辉 Other : 支持多线程的Map类,作为已发送队列(哈希表) 还作为服务代码--下节点对象指针的映射表 套接字--下节点对象指针映射表,以便快速MO路由***********************************************************************/#ifndef _INTPOINTMAP_H_#define _INTPOINTMAP_H_#include <map.h> //STL的哈希映射类#include <semaphore.h>#include <stdio.h>typedef map<unsigned int , char *> IntPointMap;typedef IntPointMap::iterator Map_Pos;class CIntPointMap{ public: CIntPointMap(); ~CIntPointMap(); void Map_Init(int size); //初始化窗口大小 bool Add(unsigned int , char *); //在队列中插入节点 int GetAllNode(char *Node[], int MaxNum); //获取最多MaxNum个节点 char * Find(int Num); //查出节点 int Delete(int Num); //删除节点 bool FindDel(unsigned int , char **); //查出节点,并删除 int GetSize(); //获取队列当前大小 int GetMaxSize(); //获取队列最大容量 bool IsFull(); //判断是否窗口已满 int PosInit(Map_Pos *); //Map_Pos的位置初始化 int GetNext(char **, Map_Pos *); //获取某位置的节点并指向下一个(首尾循环) private: IntPointMap SentQ; //哈希表 int MaxSize; //窗口大小(表大小) sem_t WriteSem; //窗口信号量,不允许超过窗口大小 sem_t AddLock, DelLock; //增,删锁,防止同时多个线程执行增或者同时执行删操作 };#endif //_INTPOINTMAP_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -