五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于低代碼控制系統(tǒng)共享內(nèi)存使用,C#共享內(nèi)存實現(xiàn)

2023-08-28 23:40 作者:砍砍學(xué)渣  | 我要投稿

共享內(nèi)存

創(chuàng)建共享內(nèi)存及設(shè)定訪問權(quán)限,創(chuàng)建方法可能不同。

共享內(nèi)存地址是否正確,進(jìn)程通訊問題:命名管道、共享內(nèi)存、信號量等不同方式進(jìn)行通信,需要選擇相同的IPC機制。

共享內(nèi)存是一種進(jìn)程間通信(Inter-Process Communication, IPC)的方式,使得多個進(jìn)程可以訪問同一塊內(nèi)存區(qū)域。共享內(nèi)存的實現(xiàn)方法主要有以下幾種:

1、基于文件映射的共享內(nèi)存:這種方法將一個文件映射到共享內(nèi)存。當(dāng)進(jìn)程需要訪問共享內(nèi)存時,它會像訪問文件一樣訪問該內(nèi)存區(qū)域。這種方法的優(yōu)點是實現(xiàn)簡單,并且可以跨平臺使用。常見的系統(tǒng)調(diào)用包括 mmap()(在UNIX和類UNIX系統(tǒng)中)和 CreateFileMapping()(在Windows中)。

2、基于共享庫的共享內(nèi)存:這種方法通過將共享內(nèi)存作為共享庫來訪問。當(dāng)進(jìn)程需要訪問共享內(nèi)存時,它會像調(diào)用庫函數(shù)一樣調(diào)用該內(nèi)存區(qū)域。這種方法的優(yōu)點是可以利用操作系統(tǒng)的共享庫功能,缺點是需要在運行時動態(tài)加載庫。

3、基于管道的共享內(nèi)存:這種方法使用管道(pipe)作為共享內(nèi)存。進(jìn)程可以通過讀寫管道來交換數(shù)據(jù)。這種方法的優(yōu)點是實現(xiàn)簡單,但是只能用于兩個進(jìn)程之間的通信。

4、基于消息隊列的共享內(nèi)存:這種方法使用消息隊列作為共享內(nèi)存。進(jìn)程可以通過發(fā)送和接收消息來交換數(shù)據(jù)。這種方法的優(yōu)點是實現(xiàn)簡單,但是只能用于兩個進(jìn)程之間的通信。

5、基于套接字的共享內(nèi)存:這種方法使用套接字作為共享內(nèi)存。進(jìn)程可以通過讀寫套接字來交換數(shù)據(jù)。這種方法的優(yōu)點是實現(xiàn)簡單,但是只能用于兩個進(jìn)程之間的通信。

以上就是共享內(nèi)存的幾種實現(xiàn)方法,每種方法都有其優(yōu)缺點,適用于不同的場景。

基于文件映射的共享內(nèi)存可以實現(xiàn)兩個進(jìn)程或多個進(jìn)程之間的數(shù)據(jù)共享交互,且與開發(fā)語言無關(guān),跨平臺應(yīng)用程序數(shù)據(jù)交互。本次使用低代碼控制系統(tǒng)原本擁有的功能采用該方法C#控制臺程序來簡要介紹一下使用方法。

低代碼控制系統(tǒng)中

低代碼系統(tǒng)創(chuàng)建共享內(nèi)存,共享內(nèi)存命名有效時,將所有變量放入共享內(nèi)存中。多工站系統(tǒng)服務(wù)器與各工站之間都可以創(chuàng)建共享內(nèi)存命名提供交互,實現(xiàn)對全部低代碼普通變量交互,注意命名不要沖突。共享內(nèi)存命名在Ctrl_Teach.txt文件中自定命名,有命名時將所有變量放入共享內(nèi)存;依據(jù)需求是否讀取創(chuàng)建的共享內(nèi)存。

低代碼控制系統(tǒng)共享內(nèi)存配置實現(xiàn)

C#實現(xiàn)共享內(nèi)存讀寫交互例程案例:

共享內(nèi)存可以指示內(nèi)存起始地址偏移量及個數(shù),注意低代碼每個變量為8字節(jié)浮點數(shù),讀寫共享內(nèi)存操作,0為起始地址。

測試實例

低代碼系統(tǒng)中共享變量(全局變量)創(chuàng)建共享內(nèi)存讀寫實現(xiàn),共享內(nèi)存命名在Ctrl_Mtn.txt文件中,配置有效命名后即可同樣實現(xiàn)將所有共享變量放入共享內(nèi)存中。

低代碼控制系統(tǒng)共享變量配置實現(xiàn)共享內(nèi)存
共享變量測試實例

內(nèi)存映射文件,C#基于文件映射的共享內(nèi)存實現(xiàn)方法。

共享內(nèi)存創(chuàng)建方實現(xiàn):C#創(chuàng)建共享內(nèi)存,持續(xù)寫入,實現(xiàn)數(shù)據(jù)共享。

//創(chuàng)建共享內(nèi)存

MemoryMappedFile shareMemory = MemoryMappedFile.CreateOrOpen("Station_1", size);

//可隨機訪問的內(nèi)存塊。

MemoryMappedViewAccessor stream = shareMemory.CreateViewAccessor(0, size);

//內(nèi)存流。調(diào)用Write按順序依次寫入,不可超出容量。

var stream = shareMemory.CreateViewStream(0, size);

共享內(nèi)存讀取(打開)方實現(xiàn):可以自定義讀取數(shù)據(jù)與寫入數(shù)據(jù)。

//打開共享內(nèi)存

MemoryMappedFile shareMemory = MemoryMappedFile.OpenExisting("Station_1");

//可隨機訪問的內(nèi)存塊。

MemoryMappedViewAccessor accessor = shareMemory.CreateViewAccessor(0, 8 * 10000);

//內(nèi)存流。調(diào)用Read按順序依次讀取。

var accessor = shareMemory.CreateViewStream(0, 8 * 10000);

通過以上描述,我們就可以在同一設(shè)備中采用C#開發(fā)的進(jìn)程應(yīng)用等通過共享內(nèi)存的方法實現(xiàn)對低代碼控制系統(tǒng)的讀寫交互,可以實現(xiàn)二次開發(fā)。共享內(nèi)存由操作系統(tǒng)分配實現(xiàn),非常便捷。應(yīng)用于視覺開發(fā),界面設(shè)計,上位機開發(fā)等場景。


基于低代碼控制系統(tǒng)共享內(nèi)存使用,C#共享內(nèi)存實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
太保市| 微博| 麦盖提县| 淳化县| 宾阳县| 镇平县| 水富县| 专栏| 湖州市| 民勤县| 孝感市| 边坝县| 探索| 当涂县| 巴彦淖尔市| 阳高县| 连江县| 玉山县| 涞源县| 鹤山市| 昌乐县| 凤山市| 淮阳县| 洛宁县| 稷山县| 盐源县| 洱源县| 盖州市| 玉山县| 陈巴尔虎旗| 云安县| 明光市| 彰化县| 大渡口区| 万山特区| 日喀则市| 巴楚县| 涞水县| 平武县| 加查县| 绿春县|