您的位置 首页 报告

同步操控技能—-栈与行列

计算机编程中栈是一个很重要的概念,尤其在汇编语言中,需要不断进栈和出栈的操作栈是限定在一个表的尾端进行插入(进堆栈)和删除(出堆栈)的

计算机编程中栈是一个很重要的概念,尤其在汇编语言中,需求不断进栈和出栈的操作.栈是限定在一个表的尾端进行刺进(进仓库)和删去(出仓库)的线性表.是后进先出结构(LIFO).

行列的界说和栈的界说是类似的,差异是数据是先进先出(FIFO)

labview还有一个概念缓冲区BUFFER,典型的比方CHART,它默许保存数据长度是1024.BUFFER的概念和行列是十分类似的,都是一个先进先出的结构.假如咱们设定行列的数据长度也是1024.比较一下他们的差异.

差异一:未抵达设定

开端的时分,行列和缓冲区中都是没有数据的,当有数据进入的时分,行列和缓冲区中的数据在不断地添加,关于缓冲区,由于未抵达它最大答应的长度 1024,因而数据是不断第添加的,行列则不同,它的数据是否添加取决于是否有读行列的进程,便是所说的出队,假如出队的速度大于入队的速度,行列中则底子不会有数据.假如没有出队的进程或许出队的速度小于入队的进程,行列中的数据也是不断地添加的.这是第一个差异.

差异二:抵达设定值

当行列和BUFFER都抵达了1024个数据后,这是再有新的数据要进来,行列和BUFFER的表现是不同的,关于BUFFER,它将主动挤出(形象的说法,当然也是编程完成的)最早进入BUFFER的数据,所谓先进先出.而行列则不同.要求进入行列的线程只能被迫等候,一向到行列中有其他线程取出数据,行列中有闲暇方位.所以行列有调理读写速度线程的才能.

相同点一:数据进入都是在尾部,(行列刺进假如在头部,就编程上面所说的栈了)

相同点二:关于中心数据都完成了有用的封装,你无法直接提取中心的某个数据,你能够读出中心的数据,可是不能改动当时BUFFER和行列的值.

LABVIEW供给的行列的功用函数(包括栈),在逐点剖析库供给了DBL型的BUFFER,我在别的的日志中专门提到了,这儿就不多说了.

LV行列的函数是根本函数,无法进行深化盯梢,估量应该是选用C++的算法然后封装的,我实践测试过,它的运转功率远高于用数组的方法构成的行列,为了详细阐明行列和栈的细节,我仍是用数组的方式,然后在介绍LV的行列函数.

首要看看如何用数组完成栈的功用:

栈的操作是十分简略的,只要压栈和出栈两个操作(PUSH AND POP)

咱们用AE来完成它.分红三个action: Init,Push ,Pop

首要严厉自界说ENUM,表明三个动作.

这样咱们就完成了栈的AE的制造进程。

看看它的调用进程。

10次循环,栈中的数据应该是0,1,2,3,4,5,6,7,8,9。栈的弹出次第应该是9,8,7,6,5,4,3,2,1,0

运转成果的确如此。

与栈相反,行列是一个先入先出的数据结构,咱们对栈的进程略微修正一下,就能够得到行列。就不多介绍了。

下面要点介绍一下LV供给的行列的详细功用。

别离介绍这8个节点的详细功用:
1:取得行列(实践是得到行列的参阅)它有5个数据端子

name:String
行列在LV体系中是称号来区别的,LV体系自己保护一个包括的现在一切行列的表,当你运转这个函数的时分,它首要会查找表中是否现已存在这个行列参阅,假如存在,就直接回来这个参阅,假如不存在,就树立一个新的行列,并将行列参阅参加表中进行保护。这样做的优点是十分显着的,答应咱们在任何子VI中,只需求知道行列的称号就能够运转这个函数直接得到行列参阅,不必经过全局变量或许数据流输入来得到参阅,在一个层层嵌套的VI中想传递一个数据很不简单,也不利于模块化。

max queue size:I32

界说的行列的最大长度,当输入-1时,行列长度不受约束,需求留意的是,假如取出数据的速度小于参加行列数据的速度,跟着时刻的推移,需求的内存会不断地添加,这显然是存在问题的,假如咱们没有规则最大长度的话,编程时分要留意自己来和谐速度。假如规则的最大长度,当抵达最大长度时分,参加行列的线程会一向等候到行列中有闲暇方位停止。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/315244.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部