인프런 커뮤니티 질문&답변

toyboy0113님의 프로필 이미지
toyboy0113

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Interlocked

멀티 스레드 환경에서의 캐시 효율

작성

·

277

0

멀티 스레드 환경에서 A,B 2개의 쓰레드가 있다고 가정했을때
프로세스에서 어떤 전역 Data number를 +1 해달라는 주문이 들어 왔을때 A쓰레드에서 해당 주문을 받고 동시에 B도 해당 주문을 받는다면 문제가 되기때문에 동기화를 해줘야한다고 말씀 주셨는데요
그렇게 되면 A가 주문을 받고 다시 Ram에 동기화
그다음 B가 주문을 받고 Ram에서 수정된 값을 가져와서 다시 Ram에 동기화 이런식이라면
멀티 쓰레드 환경에서는 캐시의 의미가 없는건가요?

캐시라는게 결국엔 프로세서와 Ram간의 거리가 멀기 때문에 이걸 완하해주는게 캐시로 알고 있는데

멀티 환경에서 주문이 들어올때마다 Ram에서 최신화 정보 가져오고 다시 동기화 한다면 캐시의 의미가 없어지는게 아닌가 해서 이렇게 질문 남기게 됩니다

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 멀티쓰레드 환경에서 캐시가 의미 없는 정도까진 아니지만,
경합 데이터인 상황에서 lock을 걸거나 atomic(interlocked) 계열을 사용하면
캐시의 이점을 못 받습니다.

toyboy0113님의 프로필 이미지
toyboy0113

작성한 질문수

질문하기