labview棧和隊列
max queue size:I32
定義的隊列的最大長(cháng)度,當輸入-1時(shí),隊列長(cháng)度不受限制,需要注意的是,如果取出數據的速度小于加入隊列數據的速度,隨著(zhù)時(shí)間的推移,需要的內存會(huì )不斷地增加,這顯然是存在問(wèn)題的,如果我們沒(méi)有規定最大長(cháng)度的話(huà),編程時(shí)候要注意自己來(lái)協(xié)調速度。如果規定的最大長(cháng)度,當達到最大長(cháng)度時(shí)候,加入隊列的線(xiàn)程會(huì )一直等待到隊列中有空閑位置為止。
本文引用地址:http://dyxdggzs.com/article/201701/337150.htm如果已經(jīng)有同名隊列存在,該設置是不起作用的,用的還是第一次運行這個(gè)函數時(shí)的設置。
element data type:隊列中的數據類(lèi)型,允許任意數據類(lèi)型。
其它兩個(gè)非常簡(jiǎn)單,不介紹了。
2:元素加入隊列(Enqueue Element)
3:預覽要出隊的元素(讀,并不取出)
4:取得隊列當前狀態(tài)( Get Queue Status)
5:釋放隊列(當程序結束時(shí),進(jìn)行清理工作,防止內存泄露)
6:在相反方向插入隊列(棧的功能),如果按這種方式插入一定數量,再依次取出,就是上面說(shuō)的棧的功能。
7:取出元素。如果當前隊列中無(wú)元素可以提取,該函數會(huì )一直等待到TIMEOUT或者有數據為止。
8。清除隊列(FLUSH),清除隊列中的所有元素。
可見(jiàn),隊列的基本操作是很簡(jiǎn)單的,關(guān)鍵是如何在實(shí)際工作中正確運用。
我們首先用AE封裝一個(gè)隊列:
我們來(lái)模擬一下WINDOWS消息,首先定義消息結構。
然后定義AE,封裝隊列。

下面我們來(lái)實(shí)驗一下這個(gè)AE,它可以運行在任何一個(gè)VI中,為了方便,我們在一個(gè)VI中做三個(gè)循環(huán),兩個(gè)寫(xiě)入隊列(生產(chǎn)者),一個(gè)讀取隊列(消費者);
隊列的應用范圍非常廣,經(jīng)常和狀態(tài)機聯(lián)合使用,就是經(jīng)常提到的隊列狀態(tài)機,有機會(huì )我會(huì )結合狀態(tài)機一起介紹。
評論