Skip to content

piovano/queue

Repository files navigation

Queue

我的第一个 C++ 程序,实现了简单的队列。

特点

  • 队列为先进先出队列,具有一般通用队列的功能。
  • 可设定内存队列容量的大小,若数据超出该量,将自动存放到文件中。
  • 队列若需存取文件,启动后台线程进行,尽量不影响入队、出队操作的效率。
  • 可设定队列的总容量。队列满后,不能入队,只能出队。
  • 可设定入队、出队操作是否阻塞。
  • 队列存放的数据为用户自定义数据,一般为结构体,固定长度。
  • 队列为线程安全,保证入队、出队可以多线程安全操作。

说明

  • 内存队列 - 仅保存指针,对象的生命周期需自行维护。
  • 单文件队列 - 仅作为多文件队列的组成部分,不能单独使用。
  • 多文件队列 - 入队时将对象保存到文件,并回收内存;出队时分配内存,并将对象写入内存。
  • 联合队列 - 由内存队列和多文件队列构成。当内存队列满时,对象存储到多文件队列中。
  • 有类型/无类型队列 - 有类型队列可自动构造、析构对象;无类型队列使用 malloc 和 free 来分配和回收内存。

测试

机器配置:

  • 内存:15.5G
  • CPU:八核Intel(R) Xeon(R) CPU E5-2609 0 @ 2.4GHz
  • 可用硬盘空间:2964.4G

操作系统:

  • Red Hat Enterprise Linux Server
  • 版本:6.2
  • 内核:2.6.32

测试数据:

struct GData {
	int head[192];
	float foot[3000];
}

测试结果:

数据量 线程数 用时 1 用时 2 用时 3
100万 入队1 出队1 4秒531毫秒 4秒602毫秒 4秒431毫秒
100万 入队2 出队1 38秒642毫秒 23秒310毫秒 65秒234毫秒
100万 入队2 出队2 5秒597毫秒 2秒198毫秒 4秒246毫秒
1000万 入队1 出队1 21秒257毫秒 40秒918毫秒 25秒926毫秒
1000万 入队2 出队1 154秒508毫秒 107秒445毫秒 220秒296毫秒
1000万 入队2 出队2 243秒359毫秒 372秒674毫秒 67秒828毫秒

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published