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

동혁님의 프로필 이미지
동혁

작성한 질문수

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

Thread Local Storage

TLS 관련하여 질문 드립니다.

작성

·

44

0

TLS를 사용하면 공용 공간에 있는 데이터를 최대한 많이 자신의 쓰레드로 가져와서 각각 처리하고 다시 돌려주는걸로 이해를 했는데 

그럼 나중에 각각의 쓰레드에서 처리하고 난 결과가 서로 상충되는 경우가 나타날수도 있지 않나요?

아니면 한명씩 싱글 쓰레드로 처리하는데 가져오는 데이터 양이 많아져서 처리속도가 빨라지는것이라고 이해해야 할까요?

 

  • 1

    Rookiss

    2021.03.15

    데이터를 갖고 간다는게 의존성이 서로 묶여 있는 데이터를
    각자의 TLS로 갖고 가라는 것이 아니고
    독립적으로 사용할 수 있는 (Buffer라거나) 데이터를 갖고 가는 것이라 상관없습니다.
    그리고 애당초 TLS에 자신만 사용할 객체를 할당할 수도 있구요.


    위 글에 대하여 이렇게 답변을 주셨습니다.
    이에 대하여 궁금한 점이 독립적으로 사용할 수 있는 데이터를 갖고 가서 처리하는 것이라면 TLS를 사용하지 않고도 처리하면 되는 것이 아닌가요?
    위 과정에서 처리한 정보들이 계속해서 저장되어야 하기 때문에 TLS가 의미가 있는 것인지..

     

     

    lock을 걸어 처리하고 있는 복잡한 일(의존성 있는 데이터?)을 가져와서 각자 처리한다는 내용이 잘 이해가 안되네요 ㅠㅠ

답변 2

0

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

4명이서 식사를 하는데 중앙에 반찬에 있다 칩시다.
중앙에 있고 젓가락이 닿는 거리니,
그냥 중앙에 있는 그릇에서 먹어도 되긴 하겠지만 서로 여러모로 불편하겠죠?
보통 그럴 때는 큼지막하게 퍼서 앞접시에 왕창 옮겨 놓고, 자기 것을 야금야금 먹습니다.
TLS는 비유하자면 앞접시 같이 사용할 수 있는 것입니다.

0

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

TLS 관련한 질문에 대해 몇 가지 유사한 질문과 답변을 찾아보았습니다. 아래 링크들은 유사한 주제에 대한 답변을 포함하고 있으니 참고해보시길 바랍니다.

  1. TLS와 데이터 경합 관련 질문

    • 질문 내용: TLS를 사용하는 쓰레드가 가져온 데이터가 다른 쓰레드들도 필요로 할 때의 동작에 대해 질문합니다.
    • 답변 요약: TLS는 경합 없이 혼자 독식하려는 의도로 사용되며, 경합이 필요한 경우 기존 방법처럼 Lock이나 원자적 접근 방법을 사용해야 합니다.
  2. 멀티쓰레드와 일관성 관련 질문

    • 질문 내용: 멀티쓰레드 환경에서 쓰레드가 공유하는 자원에 대한 일관성을 보장하는 방법에 대해 질문합니다.
    • 답변 요약: Lock을 통한 일관성 부여와 원자성 구현에 대해 설명하며, Lock은 신호등 역할로 순차적 접근을 가능하게 하는 도구라고 설명합니다.
  3. TLS와 전역변수의 차이

    • 질문 내용: TLS와 일반 전역변수의 차이점에 대한 질문입니다.
    • 답변 요약: TLS는 스택처럼 현재 쓰레드만 접근 가능하며, 함수 호출 완료 후에도 유효한 공간이라고 설명합니다.

동혁님이 말씀하신 사항을 종합하면 TLS는 각 쓰레드가 독립적으로 데이터를 처리하여 경합을 줄이고 효율성을 높이기 위한 방법입니다. 독립적으로 사용 가능한 데이터를 TLS로 처리하는 이유는 경합을 줄이며, 데이터가 원래 위치에 반영되기 전까지 쓰레드 간의 충돌을 막기 위함입니다.

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

동혁님의 프로필 이미지
동혁

작성한 질문수

질문하기