网站首页 > 易语言相关 > 易语言模块源码 正文
采用核心支持库基础代码编写,稳定高效,代码简洁明了,方便维护和升级,百万次压入弹出耗时94毫秒。先进先出模式!
在之前的版本上的一次升级,命令按照核心支持库中的“队列”进行了效仿,效率是核心支持库的N倍!
.版本 2 .支持库 EThread .程序集 定长队列, , 公开 .程序集变量 队列数组, 整数型, , "1" .程序集变量 私_队列长度, 整数型 .程序集变量 私_起始位置, 整数型 .程序集变量 私_结尾位置, 整数型 .程序集变量 私_临界许可, 整数型 .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 私_临界许可 = 创建进入许可证 () .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 删除进入许可证 (私_临界许可) .子程序 初始化队列, , 公开, '队列使用前要先初始化,初始化队列不支持线程安全。 .参数 队列长度, 整数型 私_队列长度 = 队列长度 重定义数组 (队列数组, 假, 队列长度) 进入许可区 (私_临界许可) 私_起始位置 = 0 私_结尾位置 = 0 退出许可区 (私_临界许可) .子程序 压入, 逻辑型, 公开 .参数 队列值, 整数型 进入许可区 (私_临界许可) .如果 (私_结尾位置 = 私_队列长度) .如果真 (私_起始位置 = 0 或 私_起始位置 = 1) ' 判断一下弹出的位置在哪,避免压过界! 退出许可区 (私_临界许可) 返回 (假) .如果真结束 私_结尾位置 = 1 队列数组 [私_结尾位置] = 队列值 退出许可区 (私_临界许可) 返回 (真) .否则 .如果真 (私_结尾位置 + 1 = 私_起始位置) ' 判断一下弹出的位置在哪,避免压过界! 退出许可区 (私_临界许可) 返回 (假) .如果真结束 私_结尾位置 = 私_结尾位置 + 1 队列数组 [私_结尾位置] = 队列值 退出许可区 (私_临界许可) 返回 (真) .如果结束 .子程序 弹出, 逻辑型, 公开 .参数 接受数据, 整数型, 参考 进入许可区 (私_临界许可) .如果真 (私_起始位置 = 0 且 私_结尾位置 = 0) ' 判断一下 是否两个位置都没有变化 退出许可区 (私_临界许可) 返回 (假) .如果真结束 .如果 (私_起始位置 = 私_队列长度) .如果 (私_结尾位置 = 0) ' 结尾位置可以和起始位置一样,所以这里不需要判断 结尾位置是否等于1 判断是否等于0 就行 严谨 退出许可区 (私_临界许可) 返回 (假) .否则 .如果真 (私_结尾位置 = 私_队列长度) ' 判断一下弹出的位置在哪,避免压过界!结尾位置都没有从头开始,起始位置不能越界! 退出许可区 (私_临界许可) 返回 (假) .如果真结束 .如果结束 私_起始位置 = 1 接受数据 = 队列数组 [私_起始位置] 退出许可区 (私_临界许可) 返回 (真) .否则 .如果真 (私_起始位置 = 私_结尾位置) ' 如果两个一致 就没啥东西可以弹了 退出许可区 (私_临界许可) 返回 (假) .如果真结束 私_起始位置 = 私_起始位置 + 1 接受数据 = 队列数组 [私_起始位置] 退出许可区 (私_临界许可) 返回 (真) .如果结束 .子程序 是否为空, 逻辑型, 公开 进入许可区 (私_临界许可) .如果 (私_起始位置 = 私_结尾位置) 退出许可区 (私_临界许可) 返回 (真) .否则 退出许可区 (私_临界许可) 返回 (假) .如果结束 .子程序 取队列首节点, 逻辑型, 公开 .参数 接受数据, 整数型, 参考 进入许可区 (私_临界许可) .如果 (私_起始位置 ≠ 私_结尾位置) 接受数据 = 队列数组 [私_起始位置] 退出许可区 (私_临界许可) 返回 (真) .否则 退出许可区 (私_临界许可) 返回 (假) .如果结束 .子程序 取大小, 整数型, 公开 .局部变量 局_队列大小, 整数型 进入许可区 (私_临界许可) 局_队列大小 = 私_结尾位置 - 私_起始位置 退出许可区 (私_临界许可) 返回 (局_队列大小) .子程序 清空, , 公开 .局部变量 局_计次, 整数型 进入许可区 (私_临界许可) 私_起始位置 = 0 私_结尾位置 = 0 退出许可区 (私_临界许可)
@糖心疼
- 上一篇: 易语言隐藏窗口或控件源码
- 下一篇: 易语言结束线程中的消息循环源码
猜你喜欢
- 2023-10-09 定时执行任务模块(Metr_定时执行任务[Majo])
- 2023-02-13 讯飞文本识别鉴权与文字识别源码
- 2022-04-07 大漠插件免费版3.1233的中文版模块
- 2022-04-05 易语言log日志模块源码
- 2022-03-13 易语言TCP客户端模块 支持SSL
- 2021-12-23 队长自动化测试模块2.96
- 2021-12-12 判断电脑是否开启VT虚拟化(你的cpu虚拟化特性vt没有开启)
- 2021-12-01 Echarts商业级数据图表库模块v1.7.0.328【模块及示例大全】
- 2021-11-27 动态添加选择夹子夹例程源码
- 2021-11-14 配置项加密读写源码
你 发表评论:
欢迎- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag
已有2位网友发表了看法:
易语言TV 评论于 [2019-08-06 10:40:09] 回复
易语言 队列
易语言自学网 评论于 [2019-08-22 10:04:08] 回复
易语言高效率代码