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