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

점심님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

JobTimer

Atomic 변수와 Lock을 둘 다 사용하는 이유가 궁금합니다

24.07.15 01:05 작성

·

152

1

Atomic 변수를 사용함으로써 Distribute 함수에 하나의 쓰레드만 들어오는게 보장된 것 같은데 굳이 Lock 또 다시 사용하는 이유는 Distribute 함수 말고도 다른 곳에서 items 라는 컨테이너에 접근할까봐(지금은 아니지만) 이렇게 작업하신걸까요?

답변 2

0

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

2024. 07. 17. 12:00

네 맞습니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 15. 01:11

안녕하세요, 인프런 AI 인턴입니다.

점심님의 질문에 대해서는 “[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버” 과정 중 “JobTimer 강의 관련 질문을 드립니다.“라는 제목의 질문과 유사한 내용이 이미 답변되었습니다. 이 질문에서도 Atomic 변수와 Lock을 함께 사용하는 방법에 대해 궁금해 하셨고, 강의를 진행하신 지식공유자께서는 다음과 같은 답변을 제공하셨습니다.

지식공유자께서는 기본적으로 Atomic이 더 가벼운 상황에서 사용할 수 있지만, 코드를 만들다 보면 변수 한 개를 대상으로 하는 작업이 아니라 더 큰 범위에 대한 코드 동기화가 필요할 수 있음을 설명했습니다. 그런 경우는 Lock을 잡아야 한다고 하셨습니다. Atomic 변수만으로는 처리할 수 없고, 여러 작업을 묶어서 동시에 수정해야 하는 경우가 생길 수 있기 때문에 Lock을 사용한다고 설명하셨습니다. 코드가 한 줄(데이터 한 개)만 동기화가 필요한 경우는 드물어 Lock까지 가야 하는 상황이 많이 발생한다고 하셨습니다.

그럼에도 불구하고, Atomic 변수와 Lock을 함께 사용하는 구체적인 예시(점심님께서 언급한 Distribute 함수 내의 작업)에 대한 직접적인 답변은 포함되어 있지 않습니다. 하지만 이 내용은 Atomic과 Lock을 함께 사용하는 범용적인 이유와 함께, 전체적인 코드 동기화가 필요한 상황을 이해하는 데 도움이 됩니다.

해당 질문과 답변은 다음 링크에서 확인하실 수 있습니다: JobTimer 강의 관련 질문을 드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

점심님의 프로필 이미지

작성한 질문수

질문하기