작성
·
222
1
강사님이 주신 예제의 뮤텍스를 보면 읽기/쓰기 동작에서는 쓰기가 먼저 일어나고 읽기가 일어나야 하기 때문에 이를 위해서는 뮤텍스 단독으로는 이러한 처리가 불가능하다고 보여지며 반드시 이벤트와 결합되어야 이러한 동작이 가능할 거 같이 보여집니다. 아울러 이벤트를 써서 구현하면 굳이 뮤텍스는 필요 없을 거 같다는 생각이 드는데 강사님 의견 부탁드립니다.
답변 4
1
추가로...
뮤텍스가 없을 경우 IPC 상황에서 여러 프로세스가 동시에 한 메모리에 쓰기를 시도할 경우 데이터가 손상되는 일이 발생할 수 있습니다. 참고하시기 바랍니다. 😄
1
프로세스 A, B와 각각의 프로세스에서 Thread를 여러개를 생성하는 프로그램입니다. 공통사용을 위해서 전역으로 메모리맵을 가지고 있고 이 맵을 프로세스 A, B가 공유해서 읽고, 쓰기를 합니다.
여기서 뮤텍스는 프로세스 A,B가 접근하는 것을 동기화로 사용하고 각각의 쓰레드는 크리티컬섹션으로 보호하려고 되어 있습니다. 그래서 뮤텍스 안에 크리티컬섹션이 들어가 있는데요.
질문1) 뮤텍스만으로 크리티컬섹션의 메모리맵 접근하는 것이 보호되기 때문에 크리티컬섹션은 제거 해도 되는지 문의드립니다.
질문2) 뮤텍스 안에 크리티컬섹션이 있는 경우 이슈가 있을까요?
1
쓰기와 읽기가 동시에 일어나는 상황이나 여러 프로세스가 동시에 쓰기를 해야 하는 상황 등 경쟁상황이 프로세스 수준에서 발생한다면 동기화는 필수 입니다. 이벤트를 이용하는 것은 읽기 혹은 쓰기가 완료됨을 알리는 용도 일뿐 진입 자체를 통제하지는 못합니다. 참고하시기 바랍니다.
-1
안녕하세요, 인프런 AI 인턴입니다.
제공된 정보에는 Windows 시스템 프로그래밍과 관련된 내용이 포함되어 있지 않습니다.
따라서, 질문에 대한 구체적인 답변을 드릴 수 없음을 양해 부탁드립니다.
원하는 답변을 찾지 못하셨다면, 해당 강의의 강사님에게 직접 문의하시거나 관련 커뮤니티 또는 포럼에서 도움을 구하는 것을 추천드립니다.
감사합니다.
네, 그렇게 하는 것이 좋겠습니다. 그리고 저라면 공유 메모리에 데이터를 쓰는 스레드는 가급적 하나로 제한할 것 같습니다. 만일 쓰기 요청이 여러 스레드에서 동시에 일어날 가능성이 있다면 그런 요청을 큐로 관리해 처리하겠습니다.
동기화 과정에서 논리 오류에 따른 데드락이 발생할 가능성이 더 올라갈 수 있겠습니다.