inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

쓰레드 생성

Task 순서 질문

361

bae5445

작성한 질문수 15

0

안녕하세요. 아래 코드처럼 Task 안에 while 대신 i를 찍어보게 했는데 왜 i가 0~3까지 나오지 않고 전부 4로 찍히는지 제가 이해하고 있는게 맞는지 궁금합니다.

Task.Start() 함수는 TaskScheduler에 예약을 시키는 함수이기 때문에 for문을 돌면서 바로 실행시키지 않는데요.

실행순서가 오로지 스케쥴러에게 의존적이기 때문에 예측할 수 없고, 따라서 이미지와 같이 실행할 때마다 다르게 나옵니다.

i가 4가된 이유는 for문을 4번 다 돈 후 어느 특정 시점에 Task(일감)이 실행이 되기 때문에, i=4로 찍히는 것입니다.

디버그 모드에서 천천히 한줄한줄 실행했을 경우 i가 4가 아닌 경우도 출력이 되던데, 그냥 실행시키는 경우에도 진짜 운좋으면 i가 4가 아닌 경우도 나올수가 있을까요?

 

 

C# network unity

답변 1

0

Rookiss

for (int i = 0; i < 4; i ++)
{
   int temp = i;
   ... "난 Task{temp}"


}

이렇게 수정해보세요.
저건 Task보다는 약간 미묘한 람다 문제입니다.

C#에서의 RAII

0

72

3

TLS 질문드립니다.

0

82

2

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

0

77

2

Unity Span

0

100

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

98

1

Write Read 커서 키워드

0

88

1

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

0

86

2

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

0

115

2

UnhandledException 으로 서버 터지는 경우

0

104

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

94

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

108

2

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

0

154

2

커서의 위치의 중요성

0

111

2

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

0

179

2

강의에 질문이 있습니다

0

94

2

멀티스레드 이해도 질문

0

108

1

500 vs 500

0

150

3

OnAcceptHandler 액션 함수

0

71

1

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

0

207

2

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

0

87

2

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

0

116

1