Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 23927|Отговор: 2

[Източник] C# реализира картографиране на файловата памет на процеси

[Копирай линк]
Публикувано в 7.10.2017 г. 18:51:10 ч. | | |
Файловете за картографиране на паметта използват виртуална памет, за да съпоставят файловете с адресното пространство на процеса, след което процесът манипулира файла както адреса в процесното пространство, например чрез memcpy и други функции за операции с паметта в езика C. Този метод може да се използва добре в ситуации, когато файл или голям файл трябва да се обработва често, а ефективността на обработката на IO е по-висока от тази на обикновените IO
Споделената памет е специален случай на файлове, картографирани чрез памет, които картографират парче памет вместо файл на диска. Обектът на споделената памет е Process, а операционната система по подразбиране отделя пространство в паметта на всеки процес, като всеки процес има право да достъпва само парче памет, отредено му от операционната система, но не и до други процеси. А понякога трябва да имаш достъп до една и съща памет между различни процеси, какво трябва да направиш? Операционната система предоставя API за създаване на достъп до споделена памет, а процесите, които трябва да споделят паметта, могат да достъпват паметта, споделяна от множество процеси, чрез този набор от дефинирани API-та, като всеки процес достъпва тази памет така, сякаш достъпва файл на твърд диск. .Net 4.0 въвежда System.IO. MemoryMappedFiles – клас, който капсулира API-тата, свързани с Windows Shared Memory, улеснявайки .Net програмистите да използват файлове за картографиране на паметта.
Използвайте споделена памет в C#. Следващият код за App1 позволява на потребителя да въведе ред текст в споделената памет; App2 постоянно обновява конзолата и извежда най-новото споделено съдържание на паметта; App3 реализира същите функции като App2, но методът на четене е различен.

Използвани са два метода за четене на данните.
Тъй като комуникацията между процесите рядко се използваше преди, този метод е само предварително разбиране. Програмата е твърде елементарна и има много неща, които не се оценяват. Например, как да създам споделена памет, как да я извадиш и изтриеш и т.н.




Предишен:.net/c# CryptoJS aes криптиран изходен код
Следващ:activemq Persistent Store е пълен
 Хазяин| Публикувано в 3.10.2025 г. 16:10:57 ч. |
.NET/C# реализира програмата singleton, базирана на Mutex и MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

.NET/C# процесите родител-дете комуникират чрез MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com