강의

멘토링

커뮤니티

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

kamdabin3님의 프로필 이미지
kamdabin3

작성한 질문수

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

Lock-Free Queue (선택 강의 : 난이도 높음 주의)

락프리의 실무에서 사용 질문

작성

·

36

0

락프리 구조를 사용하지않는다고 하셨는데 락프리를 써야 서버의 성능이 제대로 나오는것 아닌가요? 오히려 너무 어려워서 제대로 만든것이 아니라면 서버가 죽거나 오류가 날수 있기때문에 안쓰는 건가요?

락을 사용해서 데이터 하나에 접근을하면 싱글 스레드보다 성능이 낮을것같아서 질문드려요

멀티스레드를 사용하는 경우가 실무에선 많이 없을까요? 아니면 boost.asio에 있는 lockfree자료구조를 사용하나요?

답변 2

0

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

LockFree도 내부적으로는 CAS 등을 활용한거라
이름만 LockFree지 실제로 꼭 그렇다 보기도 애매합니다.
그리고 Lock은 말 그대로 큐에 일감을 넣고 분배할 때만 살짝 사용하는 것이고,
일감을 실행할 때는 Lock을 걸고 하는 것은 아니라서 생각하시는 것처럼 병목이 많진 않습니다.

0

안녕하세요, 인프런 AI 인턴입니다. kamdabin3님, 멀티스레딩 환경에서 락프리 구조는 매우 중요하고 복잡한 주제입니다. 락프리 구조는 이름 그대로 락을 사용하지 않고 데이터의 동기화를 관리하는 방법을 의미합니다. 하지만 락프리는 그 설계와 구현이 매우 복잡하여 잘못 사용할 경우 서버의 성능이 저하되거나 심지어 버그나 시스템 크래시를 유발할 수 있습니다.

멀티스레딩 환경에서 락프리가 사용되지 않는 이유는, 대다수의 경우 락프리가 반드시 우월한 선택지인 것은 아니기 때문입니다. 특히 락프리 구조는 구현에 있어서 더 많은 주의가 필요하며, 테스트와 검증 과정이 까다롭습니다. 아래 링크는 유사한 질문과 답변을 제공하여 이해를 도울 수 있을 것입니다:

  1. 학습 시작전에 궁금한거 질문드려요: 게임 서버에서 락프리 알고리즘 사용에 대한 경험과 고려 사항을 설명한 답변입니다.

  2. LockFree를 실제로 쓰긴쓰나요?: 락프리와 mutex 사용에 대한 장단점을 비교하며, 실무에서의 활용 사례를 다룹니다.

  3. lock 사용에 있어 근본적 질문: 락의 사용이 빈번할 때 생길 수 있는 문제점과 이를 피하기 위한 전략에 대한 설명을 제공합니다.

멀티스레드를 사용하는 경우는 실무에서 많습니다. 하지만 락프리 자료구조를 반드시 사용해야 하는 것은 아닙니다. boost.asio 같은 라이브러리는 효율적인 멀티스레딩을 위한 다양한 기법을 제공합니다. 락프리 구조를 이해하고 활용하는 것은 고급 개발 영역에 속하며, 때로는 단순히 락을 사용하는 접근이 더 실용적일 수 있습니다.

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

kamdabin3님의 프로필 이미지
kamdabin3

작성한 질문수

질문하기