最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

看完這篇多進(jìn)程同步、通信、共享內(nèi)存、內(nèi)存映射文件后,我悟了!

2022-02-18 20:19 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

節(jié)點通信存在兩種模型:共享內(nèi)存(Shared memory)和消息傳遞(Messages passing)。

  • 內(nèi)存映射文件對于托管世界的開發(fā)人員來說似乎很陌生,但它確實已經(jīng)是很遠(yuǎn)古的技術(shù)了,而且在操作系統(tǒng)中地位相當(dāng)。實際上,任何想要共享數(shù)據(jù)的通信模型都會在幕后使用它。

  • 內(nèi)存映射文件究竟是個什么?內(nèi)存映射文件允許你保留一塊地址空間,然后將該物理存儲映射到這塊內(nèi)存空間中進(jìn)行操作。物理存儲是文件管理,而內(nèi)存映射文件是操作系統(tǒng)級內(nèi)存管理。



  • 優(yōu)勢: ? ? 1.訪問磁盤文件上的數(shù)據(jù)不需執(zhí)行I/O操作和緩存操作(當(dāng)訪問文件數(shù)據(jù)時,作用尤其顯著); ? ? 2.讓運行在同一臺機(jī)器上的多個進(jìn)程共享數(shù)據(jù)(單機(jī)多進(jìn)程間數(shù)據(jù)通信效率最高);

  • 利用文件與內(nèi)存空間之間的映射,應(yīng)用程序(包括多個進(jìn)程)可以通過直接在內(nèi)存中進(jìn)行讀寫來修改文件。.NET Framework 4 用托管代碼按照本機(jī)Windows函數(shù)訪問內(nèi)存映射文件的方式來訪問內(nèi)存映射文件,管理 Win32 中的內(nèi)存映射文件 。

有兩種類型的內(nèi)存映射文件:

  • 持久內(nèi)存映射文件 持久文件是與磁盤上的源文件關(guān)聯(lián)的內(nèi)存映射文件。在最后一個進(jìn)程使用完此文件后,數(shù)據(jù)將保存到磁盤上的源文件中。這些內(nèi)存映射文件適合用來處理非常大的源文件。

  • 非持久內(nèi)存映射文件 非持久文件是未與磁盤上的源文件關(guān)聯(lián)的內(nèi)存映射文件。當(dāng)最后一個進(jìn)程使用完此文件后,數(shù)據(jù)將丟失,并且垃圾回收功能將回收此文件。這些文件適用于為進(jìn)程間通信 (IPC) 創(chuàng)建共享內(nèi)存。

  1. 在多個進(jìn)程之間進(jìn)行共享(進(jìn)程可通過使用由創(chuàng)建同一內(nèi)存映射文件的進(jìn)程所指派的公用名來映射到此文件)。

  2. 若要使用一個內(nèi)存映射文件,則必須創(chuàng)建該內(nèi)存映射文件的完整視圖或部分視圖。還可以創(chuàng)建內(nèi)存映射文件的同一部分的多個視圖,進(jìn)而創(chuàng)建并發(fā)內(nèi)存。為了使兩個視圖能夠并發(fā),必須基于同一內(nèi)存映射文件創(chuàng)建這兩個視圖。

  3. 如果文件大于應(yīng)用程序用于內(nèi)存映射的邏輯內(nèi)存空間(在 32 位計算機(jī)上為2GB),則還需要使用多個視圖。

  • 有兩種類型的視圖:流訪問視圖和隨機(jī)訪問視圖。使用流訪問視圖可對文件進(jìn)行順序訪問;在使用持久文件時,隨機(jī)訪問視圖是首選方法。

  • .Net 共享內(nèi)存 內(nèi)存映射文件原理:通過操作系統(tǒng)的內(nèi)存管理器訪問的,因此會自動將此文件分隔為多個頁,并根據(jù)需要對其進(jìn)行訪問。您不需要自行處理內(nèi)存管理。如下圖:



  • C# .Net 共享內(nèi)存 演示代碼如下:

C# .Net ?進(jìn)程間通信 共享內(nèi)存 完整示例: C#共享內(nèi)存非持久化方式通訊的例子,通訊時的線程和進(jìn)程控制也沒有問題。如下是實現(xiàn)的代碼。


看完這篇多進(jìn)程同步、通信、共享內(nèi)存、內(nèi)存映射文件后,我悟了!的評論 (共 條)

分享到微博請遵守國家法律
仁寿县| 寿阳县| 乌鲁木齐县| 上犹县| 塔城市| 皮山县| 广元市| 西平县| 五常市| 家居| 成都市| 郑州市| 昌平区| 镇远县| 哈巴河县| 上林县| 太仆寺旗| 武威市| 河津市| 铜梁县| 青阳县| 襄汾县| 桓台县| 武穴市| 泌阳县| 湖口县| 阿拉善右旗| 海伦市| 娄烦县| 宜兴市| 白山市| 汝南县| 巴中市| 沂源县| 石门县| 盐城市| 娄烦县| 郑州市| 神池县| 阳西县| 鸡东县|