2012-03-12 2 views
0

메모리 매핑 된 파일을 통해 두 프로세스가 정보를 공유해야합니다. 그 중 하나는 파일을 읽는 것 뿐이며 다른 하나는 파일에 쓰기 만합니다. 파일을 항상이 두 프로세스에 매핑 된 상태로 두어도 괜찮습니까? 나는 현재 오전 :두 개 이상의 프로세스 (윈도우)에 매핑 된 메모리 매핑 된 파일을 가질 수 있습니까?

  • 매핑 해제를 읽고 작가 과정
  • 에 파일을 매핑 파일
  • 을 언 매핑 독자 과정
  • 쓰기
  • 에 파일을 매핑

    그리고 매번 반복해서 정보를 공유하는 프로세스가 필요합니다. 내 우려는지도 및 unmap에 대한 이러한 호출은 모두 비싸다는 것입니다. 항상 두 파일에 매핑 된 파일을 유지해야합니까? mutex를 통해 공유 메모리에 대한 액세스를 조절할 수 있습니다.

    이런 종류의 작업을 수행하는 가장 좋은 방법은 무엇입니까?

  • 답변

    2

    읽기 또는 쓰기를 한 후에 파일의 매핑을 해제 할 필요가 없습니다. Windows는 로컬 파일이 한 컴퓨터에 매핑 될 때 두 프로세스의 매핑에서 "볼 수있는"데이터가 동일 함을 보장합니다.

    +0

    글쎄, 그것은 스레드간에 공유되는 프로세스 개인 데이터만큼 동기화되어 있습니다. 즉, 메모리 장벽과 동기화 (잠금 또는 연동 작업)가 필요합니다. –

    1

    이렇게 반복해야하는 경우 매핑을 유지 관리해야합니다. prematurely optimize하지 마십시오. (문제가있는 것으로 확인되면 그 시점으로 되돌아 가서 문제를 해결할 수 있습니다.)

    +0

    고마워요! 건전한 조언. 나는 이것을 초당 수십 번해야한다. 그래서 그것이 나쁠 것이라고 생각한 것이다. 하지만 맞습니다. 아직 최적화를 보지 말아야합니다. – cloudraven

    +0

    파일의 매핑을 해제하지 않아도 아무런 문제가 없습니다. MMF는이 사용 시나리오를 위해 명시 적으로 설계되었습니다. –

    관련 문제