2009-05-10 2 views
0

나는 매번 200MB의 시장 데이터가 필요한 앱을 운영 할 것입니다. 요즘은 메모리에 저장하는 데이터의 양이 적기 때문에 속도를 높이기 위해 내가하고 싶은 일이 그 것이다.로컬 IPC 용 메모리 기반 데이터 서버

며칠 동안 세션을 반복하면서 하나 이상의 응용 프로그램을 반복 실행하고 다시 실행하고 다시 실행합니다.

그럼, 하루 종일 메모리에 데이터를 보관하는 방법입니다. 앱이 충돌하더라도 디스크의 데이터 파일을 열고 데이터를 다시로드하여 데이터를 다시로드 할 필요가 없습니다.

필자의 초기 생각은 데이터를 공유 메모리에 읽는 것만으로 데이터 서버 응용 프로그램을 작성하여 사용할 수 있도록하는 것입니다. 내가

를 CreateFile을 호출하여 나는 내가 IPC 메모리 매핑을 사용할 수있는 것 같아요 그렇게한다면()

하여 CreateFileMapping()

MapViewOfFile()

더 나은 IPC/방법이 있습니까?

+2

메모리 매핑은 내가 수행 한 거래 시스템이이 작업을 수행하는 방식입니다. –

답변

1

메모리가 충분하고 메모리를 요청하지 않으면 시작 시간이 줄어들 수 있습니다. 메모리에 대한 액세스를 보장하려면 here과 같이 명명 된 공유 메모리에 파일을 매핑하는 것이 좋습니다. 간단한 프로그램으로 공유를 만들고 관리하여 메모리에 남아 있도록 보장 할 수 있습니다.

1

그냥 메모리가 데이터 파일을 매핑합니다. 컴퓨터의 메모리가 부족하지 않으면 프로그램이 종료 될 때도 파일이 파일 캐시에 유지됩니다. 다음에 시작할 때 액세스가 빨라집니다.

메모리 내 데이터가 디스크상의 데이터와 다른 경우 두 파일 만 사용하십시오. 다시 시작할 때 타임 스탬프와 메모리 파일에 기록 된 파일 버전을 확인하여 디스크 파일과 비교하면 가장 최근의 데이터가있는 프로그램을 프로그램에서 알 수 있습니다.

+0

올바르게 이해한다면, 종료 할 때 단일 응용 프로그램이 데이터를 메모리에 남겨 둘 수 있다고 제안하는 것입니까? 이 응용 프로그램 이후 어떻게 작동하는지 확실하지 하여 CloseHandle hFileMapping 하여 CloseHandle hSys –

+1

@ 마이크 UnmapViewOfFile pData의 호출 - 메모리 매핑 설비가 넘어 지속성에 대한 몇 가지 옵션이 있다면 나는 확실하지 않다, 그래서 윈도우 사람 아니에요 귀하의 프로그램의 끝. 의심의 여지없이 mem-mapped 파일에 대한 참조 카운트가 있습니다. 그래서 아무것도 시작하지 않고 파일을로드하는 작은 프로그램을 작성하십시오. 실제 응용 프로그램을 실행할 때 OS는 파일 매핑을 수행 할 때 이미 메모리에있는 내용에 연결해야합니다. – Duck

+0

@Mike - 나는 OS가 맵핑되지 않은 파일 데이터를 RAM에 저장하지 않는다고 말하고있다. –