2014-10-10 6 views
1

boost::interprocess::managed_shared_memory을 사용하여 프로세스간에 공유 할 메모리를 만듭니다.boost :: interprocess :: managed_shared_memory를 여러 번 열지 않고도 여러 번 열어 볼 수 있습니까?

단계를 취한 다음 :

  1. 단계

    a) Create memory. 
    
  2. 단계

    a) Open memory. 
    b) Write to memory 
    
  3. 단계

    a) Open memory. 
    b) Read from memory. 
    c) Open memory. 
    d) Read from memory. 
    e) Open memory. 
    f) Read from memory. 
    g) ...... and so on and so forth! 
    

이제 3 단계에서 질문을 읽으면서 다시 열어야합니다. 나는 이것이 중복 된 행동이라고 생각한다.

한 번만 열어 여러 번 읽을 수 있습니까?

실제로 open 명령은 성능 측면에서 비용이 많이 들며 응용 프로그램에서 병목 현상이 있음이 입증되었습니다.

+2

그냥 다시 열지 않아도 될까요? 정확히 코드가 어떻게 생겼으며 정확히 무엇이 잘못 되었습니까? –

+0

오픈하지 않고 사용하려고했지만 메모리에 액세스 할 수 없습니다! – CinCout

답변

1

샘플 중 많은 부분은 간결함을 위해 주 기능에서 managed_shared_memory를가집니다.

그러나 공유 메모리 매핑의 수명을 관리 할 책임이있는 관련 클래스의 구성원이어야합니다.

물론 main의 로컬 변수로 유지할 수는 있지만 모든 함수 호출에서 계속 전달해야합니다. (나는 을 쓰지 않고을 글로벌 변수로 만들 것을 권유한다.

+0

심지어 클래스의 멤버 변수로 만들겠다고 생각했지만, 이것이 작동하는지 확실하지 않습니다! 월요일에해볼거야! 감사! – CinCout

+0

성공적으로 작동합니다 :) 고마워요 :) – CinCout

+1

우우 홉. 의견을 주셔서 감사합니다 – sehe