diskQueue在New初始化的时候会取回之前持久化的元数据
其保存的元数据格式为 实例名称.diskqueue.meta.dat , 保存的数据为
以下是对应的方法 d.retrieveMetaData() 和 persistMetaData() 具体实现,前者在初始化取回之前保存的state, 后者在sync同步的保存当前的state
接下来就是diskqueue的核心所在,也就是ioLoop() 函数
ioLoop() 的实现是通过for 轮询, 加 select 多路复用监听多个通道, 具体如下
readOne 读取一条数据的具体实现:
writeOne() 写入一条数据的具体实现:
其他的一些函数如下:
下面是使用的例子
// 执行结果
queuequeue是STL中现成的队列容器,我们只需要了解他的相关函数及使用方法,即可很方便的帮助我们使用队列这个数据结构。
1.头文件:
#include <queue >
2.变量声明:
queue <数据类型 >变量名
例queue <int >a; 即声明了一个int型的队列a
同理,也可声明queue <string >bqueue <struct node >c;
3.相关函数:
(1)q.push(x) :即向队列q的队尾插入数据x
#include<queue>
queue<int>q
q.push(5)
cout <<q.front() <<endl
1
2
3
1
2
3
(2)q.front():此函数没有参数,是指返回队首的值(只返回此值,并不从队中删除)
queue<string>q
q.push("hello")
q.push("world")
cout <<q.front() <<endl
1
2
3
1
2
3
(3)q.pop():此函数没有参数,指删除队首元素
queue<double>q
q.push(5.3)
q.push(8)
cout <<q.front() <<'\n'
q.pop()
cout <<q.front() <<'\n'
1
2
3
4
5
6
1
2
3
4
5
6
(4)q.back():此函数没有参数,返回队尾元素的值
queue<double>q
q.push(5.3)
q.push(8)
cout <<q.back() <<endl
1
2
3
1
2
3
(5)q.empty():此函数没有参数,判断队列是否为空,若队空,则返回真(1)
queue<int>q
cout <<q.empty() <<endl
q.push("3")
cout <<q.empty() <<endl
1
2
3
1
2
3
(6)q.size():此函数没有参数,返回队列元素个数
queue<double>q
q.push(5.3)
q.push(8)
cout <<q.size() <<'\n'
1
2
3
4
1
2
3
4
二、priority_queue
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)