<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 高速數(shù)據(jù)流盤處理:編程與標(biāo)定

          高速數(shù)據(jù)流盤處理:編程與標(biāo)定

          作者: 時(shí)間:2009-04-13 來源:網(wǎng)絡(luò) 收藏

          數(shù)據(jù)流盤應(yīng)用的最優(yōu)方法

          應(yīng)用從單線程到多線程架構(gòu)的演進(jìn)被廣泛認(rèn)為是重大的編程挑戰(zhàn)。LabVIEW為多核處理器提供了一個(gè)理想的編程環(huán)境,因?yàn)長(zhǎng)abVIEW應(yīng)用在本質(zhì)上是多線程的。因而,LabVIEW編程人員通過幾乎很少甚至無需額外的編碼,便可以從多核處理器獲益。多線程應(yīng)用程序非常適用于并行測(cè)試和數(shù)據(jù)流盤應(yīng)用,而且,在流處理應(yīng)用中運(yùn)用適當(dāng)?shù)木幊碳夹g(shù),可以使 儀器發(fā)揮最大性能,這是通過代碼的并行化完成的。

          同樣,并行機(jī)制還可以應(yīng)用于創(chuàng)建數(shù)據(jù)流盤應(yīng)用或從計(jì)算機(jī)處理器獲取最大性能。在流盤應(yīng)用中,兩個(gè)主要占用總線和處理器的任務(wù)是:1)從數(shù)字化儀采集數(shù)據(jù),和2)將數(shù)據(jù)寫入到文件中。由于這一點(diǎn)是事先知道的,所以進(jìn)程可以劃分為多個(gè)循環(huán)。利用LabVIEW隊(duì)列機(jī)構(gòu),每個(gè)循環(huán)間實(shí)現(xiàn)了數(shù)據(jù)共享。通常,這被稱為一個(gè)生產(chǎn)者-消費(fèi)者算法結(jié)構(gòu)。



          圖2:帶有隊(duì)列結(jié)構(gòu)的生產(chǎn)者/消費(fèi)者循環(huán)架構(gòu)。

          在上例中,上面的循環(huán)(生產(chǎn)者)從一個(gè)高速數(shù)字化儀中采集數(shù)據(jù),并將其傳遞至一個(gè)隊(duì)列。下面的循環(huán)(消費(fèi)者)從隊(duì)列中讀取數(shù)據(jù)并將其寫入到磁盤。在后臺(tái),LabVIEW為隊(duì)列在PC中分配一個(gè)存儲(chǔ)塊。該存儲(chǔ)器模塊被用作兩個(gè)循環(huán)間數(shù)據(jù)傳遞的臨時(shí)存儲(chǔ)FIFO。對(duì)于大多數(shù)編程語(yǔ)言,多個(gè)進(jìn)程間的存儲(chǔ)器共享要求不菲的編程開銷。然而,LabVIEW處理了所有的存儲(chǔ)器訪問,以確保讀-寫競(jìng)爭(zhēng)狀況不會(huì)發(fā)生。隊(duì)列結(jié)構(gòu)的執(zhí)行可以通過下圖可視化展示:


          圖3:對(duì)列結(jié)構(gòu)的數(shù)據(jù)流編程模型。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();