묻고 답해요
149만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
동시 요청에 관한 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 멀티 스레드 관련된 내용으로 강의를 듣다가 궁금한 점이 있어서 댓글 달아봅니다. 혹시 멀티 쓰레드에서의 동시 요청과 다수의 서버로 운영되는 어플리케이션에서의 동시 요청은 같은 맥락일까요?? 멀티 쓰레드의 동시 요청에서 공유 변수를 사용할 때 주의하는 것과 동기화 시키는 내용이 다수의 서버로 운여되는 어플리케이션에서도 동일한 내용인지 명확하게 구분이 안되어 여쭤봅니다. 감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
가시성과 코드 재배치에 관해서 문의드립니다.
안녕하세요. 강사님... 멀티스레드 부분에서 나오는 개념이 어려워 나름의 생각 정리 후 맞는지 확인차 질의드립니다. 1) 동일한 객체에 대해 동일한 수정 순서를 보장한다. 만약 공유자원 A에 스레드 1, 2, 3이 지속적으로 접근 한다고 할 때(Producer 처럼 while(true) { ... } 구조) 특정 시점에 스레드 1이 A에 저장된 값을 읽었고 바로 스레드 2가 A에 저장된 값을 읽었다면 스레드 2가 공유자원 A에서 읽은 값은 적어도 스레드 1이 공유자원 A에서 읽은 값을 포함하여 이후 시점에 변경된 값이 읽혀진다. 2) 코드 재배치 - 코드 재배치는 Cache에 의한 재배치, CPU 파이프라인에 의한 재배치가 있다. -> 단일 스레드에서는 코드 재배치가 이루어져도 절차에 맞게 결과가 나왔지만, 멀티스레드일때는 코드 재배치에 의해 원하는 결과가 나오지 않을 수 있다. 3) 가시성 보장이란 - 스레드 1에서 공유 자원에 대한 값을 변경하고, 바로 스레드 2가 공유 자원에 대한 값을 읽었을 때 스레드 1에서 변경한 값이 읽혀지는 것 (스레드 1의 캐시에서 메모리에 값을 반영한 것) 4) lock_guard<mutex> lock(m); - 해당 코드도 결국에는 단일 스레드에서 동작하는 것 과 동일하기에 원자성을 보장한다고 보아야 되는 것 인지요 ?... 원자성을 보장한다면 동일 객체에 대한 수정 순서를 보장한다고 보면 되는 것이 맞는지 궁금합니다. (코드 재배치 문제는 별 문제가 안될 거 같지만, 가시성은 보장하는지도 궁금해요 ㅠㅠ) 이정도로 해석해도 되는 부분인지요 ..