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

Ji Hwan Bae님의 프로필 이미지
Ji Hwan Bae

작성한 질문수

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

Lock 기초

number의 값이 이상한 상수로 나오는 현상이 발생합니다

작성

·

254

0

number++;을 사용해도number의 값이 -2147473649으로 나오고  Interlocked를 써도 number의 값이 -2147473649으로 나오고 Monitor를 써도 number의 값이 -2147473649으로 나옵니다.

오버플로우 값보다 하나 더 작게 나오는데 왜 그런지 모르겠습니다. 

현재 맥을 사용하고 있는데 혹시 맥 문제인가요? 아니라면 문제를 해결하기 위해 어떤 키워드로 검색을 해야하나요?? 

답변 5

1

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

WaitAll이나 Join 코드 없이 하면 Thread1와 Thread2가
마치길 기다리지 않고 바로 Console.WriteLine을 해주기 때문에
아예 연산을 해주지 않은 상태일 수 있습니다.

WaitAll이 작동 안하는건 처음 보는데 환경 문제일 수도 있고
제 환경엔 재현되지 않아 뭐라 할 수가 없네요.

0

Ji Hwan Bae님의 프로필 이미지
Ji Hwan Bae
질문자

해결했습니다. 빨간 박스에 있는 버전 제어를 체크 해제 하니깐 정상적으로 작동합니다. 역시 환경 설정 문제였네요. 왜 그런지는 모르겠지만 해결은 했습니다. 감사합니다!!

0

Ji Hwan Bae님의 프로필 이미지
Ji Hwan Bae
질문자

넵 알겠습니다 답변 감사합니다!!

0

Ji Hwan Bae님의 프로필 이미지
Ji Hwan Bae
질문자

이런 식으로 하니깐 값은 정상적으로 0이 나오는걸 확인 할 수 있었습니다. 말씀하신데로 WaitAll이 제대로 작동을 안하는것 같네요... Main함수 안에서 제대로 적었는데 왜 안되는지 모르겠네요. 

휴일 늦은 시간에 죄송합니다...

0

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

Main 안에 Task.WaitAll을 제대로 해주신게 맞을까요?
Thread_1, Thread_2가 시작하기도 전에
Console.WriteLine이 실행된 것이 아닐까 싶습니다.

Ji Hwan Bae님의 프로필 이미지
Ji Hwan Bae

작성한 질문수

질문하기