쓰레드 While 문 질문입니다
ThreadMain함수 안에서 release 모드에서는 코드가 변형이 되어
while(_stop == false) 가 if (stop == false) while(true) 형태로 변형이 된다고 하셨는데
그러면 쓰레드를 사용하는 경우에 while(_stop == false) 같은 형식을 쓰는 것을 자제해야 하는건가요?
지금이야 몇줄 안되서 멈추는 원인을 찾기 쉬웠겠지만 나중에 코드가 길어질 경우 그런 변형으로 인한 오류 부분이 나타나면 찾기 어려울것 같은데 어떻게 해야 하나요?
답변 2
0
멀티쓰레드 환경이라고 모든 변수가 항상 문제가 되는게 아니고
쓰레드끼리 공유해서 사용하는 데이터들이 문제가 됩니다.
일반 함수의 로컬 변수는 멀티쓰레드 환경이라 하더라도
각자의 스택 메모리가 있기에 별다른 영향을 받지 않습니다.
어차피 멀티쓰레드에 온 이상 [공유 데이터]는 항상 주의 깊게 생각해야 하기 때문에,
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





