[완료]메일슬롯 동기화 문제 (윈도우즈 API)
글쓴이: jeongheumjo / 작성시간: 목, 2011/03/24 - 3:38오후
윈도우즈 API 관련 문제인데 devpia.co.kr 에서 아무도 답변을 해주지 않아서... 부득이 이곳에 여쭤봅니다.
양해를 구하면서... 여쭤볼게요.
하나의 메일슬롯이 있습니다.
한 프로세스는 그 메일슬롯에서 읽기(데이타 수신)만 합니다.
그런데 데이타를 쓰는(보내는) 프로세스가 6개 정도 됩니다.
데이타를 쓰는(보내는) 프로세스가 CreateFile 할 때는 아래와 같은 플래그를 사용합니다.
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
그렇다면 데이타를 쓰는(보내는) 6개의 프로세스들은 데이타를 쓸 때(보낼 때) 마다 동기화를 해야할까요?
데이타를 읽는(받는) 프로세스는 동기화 할 필요 없지요? 왜냐면 Blocked I/O 방식이니까요..
물론 동기화의 방법은 이름있는 뮤택스를 통한 프로세스간의 동기화 입니다.
지금까지 아주 작은 데이타를 주고받는데 에는 동기화 없이 문제가 없었는데.... 확신이 서질 않아서요..
Forums:
전에 테스트해본적이 있는데요.
처리하는 작업이 많을경우.
데이터 로스가 있었던것으로 기억합니다.
많은 부하가 있지 않다면. 그냥 사용해도 되겠지만요.
테스트해서 검증해보신후에 이정도면 되겠다 싶으시면. 적당히 사용하시면 될것 같습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
감사합니다.
결국 동기화를 하였습니다.
WriteFile 호출을 동일한 파일에 대해 두 개 이상의 쓰레드가 동시에 한다면 동기화를 해야만 아토믹하게 출력되리라 판단했습니다.
테스트는 해보지도 않았지만 그게 상식적인 것 같아서요..
답변 감사합니다.
댓글 달기