inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

컴파일러 최적화

쓰레드 While 문 질문입니다

해결된 질문

432

astrape

작성한 질문수 23

0

ThreadMain함수 안에서 release 모드에서는 코드가 변형이 되어

while(_stop == false) 가 if (stop == false) while(true) 형태로 변형이 된다고 하셨는데

그러면 쓰레드를 사용하는 경우에 while(_stop == false) 같은 형식을 쓰는 것을 자제해야 하는건가요?

지금이야 몇줄 안되서 멈추는 원인을 찾기 쉬웠겠지만 나중에 코드가 길어질 경우 그런 변형으로 인한 오류 부분이 나타나면 찾기 어려울것 같은데 어떻게 해야 하나요?

unity C# network

답변 2

0

astrape

답변 감사합니다!!

0

Rookiss

멀티쓰레드 환경이라고 모든 변수가 항상 문제가 되는게 아니고
쓰레드끼리 공유해서 사용하는 데이터들이 문제가 됩니다.
일반 함수의 로컬 변수는 멀티쓰레드 환경이라 하더라도
각자의 스택 메모리가 있기에 별다른 영향을 받지 않습니다.

어차피 멀티쓰레드에 온 이상 [공유 데이터]는 항상 주의 깊게 생각해야 하기 때문에,
while (_stop == false)를 자제해야 할 것 까지는 없을 것 같고
그냥 특징 데이터가 공유 데이터인지를 생각하면서 프로그래밍을 해야합니다.
마지막으로 변형으로 인한 오류 부분이 나타나면 찾기 어려울 것 같다 하셨는데, 맞습니다!
싱글쓰레드에선 없던 버그가 멀티쓰레드에서만 발생하면
정말 골치가 아프고 찾기 힘든 상황이 종종 발생합니다.
그래서 멀티쓰레드를 프로그래밍의 흑마술이라고도 하고
MMO 서버 같이 꼭!! 사용해야 할 상황이 아니면 정말 기피하는 사람들도 많습니다.

TLS 질문드립니다.

0

37

2

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

0

44

2

Unity Span

0

68

2

XML, Dll 차이점

0

99

2

Session 질문입니다

0

75

1

Write Read 커서 키워드

0

69

1

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

0

66

2

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

0

95

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

165

2

강의에 질문이 있습니다

0

83

2

멀티스레드 이해도 질문

0

90

1

500 vs 500

0

122

3

OnAcceptHandler 액션 함수

0

58

1

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

0

186

2

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

0

79

2

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

0

100

1

스핀락 질문.

0

105

2