inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Series Phát triển Game MMORPG với C# và Unity] Part4: Game Server

Bộ nhớ cục bộ của luồng

TLS 질문드립니다.

34

ehdrkwhr8889925

2 câu hỏi đã được viết

0

static ThreadLocal<string> tl = new(()=> { return "dd"; });
이렇게 변수 선언을 영상과 같이 return을 받게 되는 형태로 만들어 졌을 시에 Thread에서

Console.WriteLine(tl.Value); 이렇게 최초로 tl.Value를 출력해보면 중단점을 걸었을시에 영상에서 설명 해주신 것과 같이 null값이 들어가게 됩니다. 그런데 궁금한건 그렇다면 Console.WriteLine(tl.Value); 이것의 콘솔에서의 실행 결과는 Null이 떠야하는 것 아닌가요?

C# unity 네트워크

Câu trả lời 2

0

Rookiss

tl.Value 하는 '순간' 만들어지기 때문에 그렇습니다.

0

communityai8509

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

질문해 주신 ThreadLocal에 관한 부분에 대해 설명드리겠습니다.

ThreadLocal<T>는 각 스레드에 고유한 데이터를 저장할 수 있는 방법을 제공하는 클래스입니다. 사용자가 정의한 함수를 통해 초기값을 설정할 수 있으며, 각 스레드는 이 초기화 함수를 호출하여 자신의 고유한 데이터를 설정합니다.

질문주신 코드에서 static ThreadLocal<string> tl = new(() => { return "dd"; });는 각 스레드가 tl.Value를 처음 호출할 때 “dd”라는 값을 할당받도록 하는 것입니다.

  1. 주목할 부분은 tl.Value를 처음 접근할 때 초기화 함수가 실행된다는 것입니다. 따라서 Console.WriteLine(tl.Value); 호출 시, 만약 이전에 다른 스레드에서 tl.Value에 접근한 적이 없다면, 그 스레드에는 처음으로 “dd”가 할당되고 출력됩니다.

  2. 초기화 함수가 실행되지 않는 상황이라면, 특정 스레드에서 tl.Value를 처음 접근한 것이 아닌 경우 또는 특정 구조의 코드가 있을 때 null을 반환할 수 있습니다. 하지만, 많은 경우 직접적인 콘솔 출력에서는 초기화 이후의 값을 보게 됩니다.

아래 두 개의 링크에서 더욱 깊이 있는 TLS와 관련된 내용을 참고할 수 있습니다:

이 링크들은 TLS의 작동 방식과 초기화 내용에 대해 자세한 설명을 제공하고 있습니다.

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

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

39

2

Unity Span

0

66

2

XML, Dll 차이점

0

99

2

Session 질문입니다

0

74

1

Write Read 커서 키워드

0

69

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

65

2

네트워크 Send 전담 스레드 배치

0

94

2

UnhandledException 으로 서버 터지는 경우

0

82

2

컨텐츠 단, 엔진 단

0

100

1

질문 있습니다

0

73

2

C# 게임서버 3D MMORPG

0

141

2

유니티6 버전

0

94

2

receive하는 부분과 send하는 부분의 차이

0

128

2

커서의 위치의 중요성

0

99

2

C++ 전혀 모르는데 C# 서버

0

164

2

강의에 질문이 있습니다

0

83

2

멀티스레드 이해도 질문

0

90

1

500 vs 500

0

122

3

OnAcceptHandler 액션 함수

0

57

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

185

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

78

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

100

1

스핀락 질문.

0

104

2

안녕하세요 취업 학원 관련해서 문의드립니다.

0

174

2