定长队列模块3.0压入队列、弹出队列

易语言 2020-07-15 14:44:43

定长队列模块3.0压入队列、弹出队列

更新细节:
修改了一些变量和子程序的命名,增加了一些备注。
一些细微的功能调整,使其更方便使用。
纯核心库代码,备注非常的详细!适合高并发项目中使用!

.如果真 (私_弹出位置 = 0 且 私_压入位置 = 0) ' ’默认 弹出位置和压入位置都是0 所以如果都是0 就直接返回假
退出许可区 (私_临界许可)
返回 (假)
.如果真结束
.如果 (私_弹出位置 = 私_最大长度) ' 如果弹出位置达到了最大数量。那就需要归1了,下面判断下,能不能归1
.如果真 (私_压入位置 = 0 或 私_压入位置 = 私_最大长度) ' 判断下 压入位置在什么地方,如果是0 那就是没移动,如果是最最大长度,那就是弹完了。不能继续弹了。再弹就超过压入位置了。
退出许可区 (私_临界许可)
返回 (假)
.如果真结束
私_弹出位置 = 1 ' 归1成功。随便弹吧
值 = 私_队列数组 [私_弹出位置]
私_队列长度 = 私_队列长度 - 1
退出许可区 (私_临界许可)
返回 (真)
.否则
.如果真 (私_弹出位置 = 私_压入位置)
退出许可区 (私_临界许可)
返回 (假)
.如果真结束
私_弹出位置 = 私_弹出位置 + 1 ' 这里就符合条件了,随便弹吧
值 = 私_队列数组 [私_弹出位置]
私_队列长度 = 私_队列长度 - 1
退出许可区 (私_临界许可)
返回 (真)