[C#] SharedMemory 사용법

2022. 5. 12. 14:07·Programming/C#

실제 업무에서는 Struct 내부에 데이터를 넣어 SharedMemory 를 통해 프로세스간 데이터를 공유한다.

 

Install

class SharedMemory
{
    public void installSharedMemory(string name)
    {
        A a;

        MemoryMappedFile mmf = MemoryMappedFile.CreateNew(name, 10000);
        var accessor = mmf.CreateViewAccessor();
        a.a = 244;
        a.b = 255;
        a.c = 266;
        accessor.Write<A>(0, ref a);
    }
}

struct A
{
    public int a;
    public int b;
    public int c;
}

 

Read

class SharedMemory
{
    public void Read()
    {
        try
        {
            using (var mmf = MemoryMappedFile.OpenExisting("oug"))
            {
                using (MemoryMappedViewStream stream = mmf.CreateViewStream(0, 12))
                {
                    using (var accessor = mmf.CreateViewAccessor())
                    {
                        accessor.Read(0, out Test a);
                        Console.WriteLine(a.a);
                        Console.WriteLine(a.b);
                        Console.WriteLine(a.c);
                        Console.WriteLine("");
                    }
                }
            }
        }
        catch
        {
            Console.WriteLine("SharedMemory is unInstall");
        }
    }

    struct Test
    {
        public int a;
        public int b;
        public int c;
    }
}

 

만약 공유메모리를 동시에 접근하여 읽고 쓸 수 있게 하여야 한다면

Mutex, Lock 을 활용해서 구현하면 가능하다.

 

Dynamic 한 형태의 자료형을 넣어야 할 경우는 지양하는것이 좋으며,

부득이하게 삽입해야 한다면 직렬화, 데이터 Size 지정 등이 필요하다.

 

관련 예제는 MSDN 에 상세히 설명되어 있다.

저작자표시 비영리 동일조건 (새창열림)

'Programming > C#' 카테고리의 다른 글

MAUI의 미래에 대해  (0) 2023.06.05
[C#] Forms.Timer vs Threading.Timer  (0) 2022.07.25
[C#] UDP Multicast 수신  (0) 2022.04.08
[C#]System.Timers.Timer 사용시 Race Condition  (0) 2021.12.22
[C#] 반복문 캐싱 최적화  (0) 2021.07.14
'Programming/C#' 카테고리의 다른 글
  • MAUI의 미래에 대해
  • [C#] Forms.Timer vs Threading.Timer
  • [C#] UDP Multicast 수신
  • [C#]System.Timers.Timer 사용시 Race Condition
Cyp
Cyp
  • Cyp
    Cyp Software Blog
    Cyp
  • 전체
    오늘
    어제
    • Cyp Blog (163)
      • Artificial Intelligence (40)
        • Article (21)
        • Post (2)
        • Basic (14)
        • Preferences (3)
      • Cyber Security (1)
      • Programming (46)
        • C++ (21)
        • C# (19)
        • Python (2)
        • Rust (0)
        • Java (1)
      • Algorithm (17)
        • BACKJOON (15)
      • Operating System (14)
        • WSL (2)
        • Windows (1)
        • Linux (5)
        • Security (3)
      • Tools (26)
        • Docker (3)
        • DataBase (2)
        • SSH (1)
        • Doxygen (2)
        • Etc (17)
      • Miscellaneous (19)
        • Book (2)
        • Hardware (2)
        • Hevel (1)
  • 블로그 메뉴

    • Home
    • Guest Book
  • 공지사항

    • 블로그 업데이트 노트
    • 블로그 운영방침
  • 인기 글

  • 태그

    Bom
    UTF-8 without BOM
    utf-8 bom
    y-cruncher
    C4819
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Cyp
[C#] SharedMemory 사용법
상단으로

티스토리툴바