강의

멘토링

커뮤니티

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

꾼신님의 프로필 이미지
꾼신

작성한 질문수

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

Thread Local Storage

setmaxthreads 그리고 추가 질문

작성

·

339

0

ThreadPool.SetMinThreads(1, 1);

ThreadPool.SetMaxThreads(3, 3);

 

에서 최대 쓰레드가 3개라고 설정했는데 parallel로 실행하면

아래와 같이 1,4,6,5 이렇게 4개의 쓰레드 id를 가지는지 궁금합니다.

그리고 TLS가 static 변수를 각 쓰레드의 로컬 변수로 만들어서 사용한다는 건데 이 또한 lock을 걸어서 사용하는 건가요?

만약 lock을 사용하지 않는다면 쓰레드 에서 값을 변경한 것이 static 변수에는 영향을 끼치지 않고 스레드 로컬에서만 사용한다는 것인가요?

답변 1

2

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

https://learn.microsoft.com/ko-kr/dotnet/api/system.threading.threadpool.setmaxthreads?view=net-6.0
정확히 말하면 '동시에 활성화 될 수 있는' 쓰레드 개수입니다.
만드는건 제한이 없죠.

TLS는 공유해서 사용하는 개념이 아니므로,
락을 걸지 않고 사용합니다. (쓰레다마다 고유하게 있는 전역 변수에 해당)

꾼신님의 프로필 이미지
꾼신

작성한 질문수

질문하기