멀티스레드의 문제라는 게 멀티 프로세스 환경에서는 일어나지 않나요?
글쓴이: muz0880 / 작성시간: 금, 2016/02/26 - 6:28오전
멀티 스레드의 문제점 중에 스레드들이 한 공유자원을 사용할 때 동기화를 해 주지 않으면
작업 중 컨텍스트 스위칭이 일어나서 데이터를 저장하고 불러오는 과정 사이에서
작업 반영이 안되거나 예기치 않은 값이 들어가는 현상(무어라 하는 지 잘 모르겠습니다..)이
일어나는 데..
스레드가 아닌 멀티 프로세스의 경우 같은 상황에서 A가 자원을 읽고 쓰기 전에
B가 자원을 읽고 쓰거나하여 결과적으로 A,B의 작업 결과가 모두 반영되지 않거나
이상해지는 경우가 동일하게 일어날 수 있는 게 아닌가요?
아니면 혹시 스레드의 문제라는 건 메모리공간을 공유하면서 컨텍스트 스위칭 시
이전 내용을 같은 곳에 저장하기 때문에 생기는 일인가요?
.. 머리 속에서 자꾸 헷갈리고 모르는 상태로 답이 안나와서 여쭙니다..
Forums:
...
네, 멀티프로세스 환경에서도 여러 개의 프로세스가 똑같은 자원을 사용하면 (같은 파일에 쓰기를 한다든지..) 마찬가지 상황이 생길 수 있습니다.
더 자세한 것을 알아보시려면 data race나 race condition으로 찾아보세요.
어.. 그랬군요
race condition 이 중복으로 씌인다던가 하는 문제를 의미하는 거였군요...
답변해주셔서 감사합니다.
스레드는 코드까지 포함해서 메모리 전체를 무조건
스레드는 코드까지 포함해서 메모리 전체를 무조건 무제한으로 공유합니다. 돌아가는 스레드 중에 잘못된 코드 하나만 있으면 전체가 훅갑니다.
프로세스는 IPC로 요청하는 Shared Memory 외에는 메모리 자체가 격리되고 이쪽만 잘 다루면 문제가 발생하지 않고요.
Written By the Black Knight of Destruction
-삭제-
한번 올린다는게 두번 올라갔네요. 관리자님 삭제해 주세요.
Written By the Black Knight of Destruction
댓글 달기