网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
自定义循环缓冲区
作者:
/ 发布于
2019/8/12
/
192
using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace ODSensor //泛型集合 { public class MultiBuffer_NET_DISP_T<T> { int Buffer2_rowNum; T[,] Buffer2_buffer = null; int[] Buffer2_head = new int[10]; int[] Buffer2_tail = new int[10]; int sensors_num = 1; long[] headPlus = new long[10]; long[] tailPlus = new long[10]; public MultiBuffer_NET_DISP_T() { } public bool MultiBuffer_init(int sensor_num,int rowNum) { if (sensor_num > 10 || rowNum > 100000) { return false; } Buffer2_buffer = new T[sensor_num, rowNum]; Buffer2_rowNum = rowNum; sensors_num = sensor_num; for (int i = 0; i < 10; i++) { Buffer2_head[i] = 0; Buffer2_tail[i] = 0; headPlus[i] = 0; tailPlus[i] = 0; } return true; } public bool MultiBuffer_getValue(int index, ref T line) { //if (line == 0) // return false; //因为是循环缓冲区,所以head可能比tail大、或小 if (Buffer2_tail[index] == Buffer2_head[index]) { return false; } line = Buffer2_buffer[index,Buffer2_tail[index]]; if (++Buffer2_tail[index] >= Buffer2_rowNum) { Buffer2_tail[index] = 0; //没有控制 tailPlus[index]++; } return true; } public bool MultiBuffer_addValue(int index, T value) { Buffer2_buffer[index,Buffer2_head[index]] = value; if (++Buffer2_head[index] >= Buffer2_rowNum) { Buffer2_head[index] = 0; headPlus[index]++; } //发生追尾,说明缓冲区溢出 if ((Buffer2_head[index] == Buffer2_tail[index]) && (tailPlus[index] != headPlus[index])) { return false; } return true; } public bool MultiBuffer_hasValue(int index) { //因为是循环缓冲区,所以head可能比tail大、或小 if (Buffer2_tail[index] == Buffer2_head[index]) { return false; } return true; } public int MultiBuffer_getValueCount(int index) { int count; if (Buffer2_head[index] >= Buffer2_tail[index]) { count = Buffer2_head[index] - Buffer2_tail[index]; } else { count = Buffer2_rowNum - Buffer2_tail[index] + Buffer2_head[index]; } return count; } public void MultiBuffer_reset() { for (int i = 0; i < 10; i++) { Buffer2_head[i] = 0; Buffer2_tail[i] = 0; headPlus[i] = 0; tailPlus[i] = 0; } } } }
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
自定义循环缓冲区
同语言下
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
.
计算每周和每月固定日期
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
贡献的其它代码
Label
地图
本站
我们
服务
版权
联系
回馈
博客