inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Lock 기초

lock 질문입니다.

278

김종현

작성한 질문수 14

0

저는 한쪽에만 lock을 걸으면 어떻게 될까? 라는 생각을 가지고 Thread_1에는 lock을 걸고, Thread_2에는 lock을 걸지 않았습니다.

Thread_2에서는 lock을 걸지 않아서 lock의 영향을 받지 않기 때문에 Thread_1에서 작업중인 number에 접근할 수 있고, Thread_1에서도 Thread_2에서 작업중인 number에 접근할 수 있어서 난수가 나올 것이라고 예상했습니다.

하지만 몇번을 돌려봐도 결과는 난수가 아닌 0이 나왔습니다.

그리고 질문들을 살펴보다 보니 새로운 object _obj2를 만들어서 Thread_2에 lock을 했을 때는 난수가 나온다는 것을 알았습니다.

서로 다른 object를 통해 lock을 하면 난수가 나온다는 것은 이해했고 이게 제가 예상했던 결과인데, 한쪽에만 lock을 걸었을 경우에는 왜 0이 나오는지 잘 모르겠습니다.

unity C# network

답변 1

0

Rookiss

한쪽만 lock을 걸 경우, lock을 거는 쓰레드가
해당 변수에 상대적으로 '천천히' 접근하게 되기 때문에
그런 결과가 나온 것이 아닐까 생각됩니다.
정확히 어떻게 테스트를 하셨는지 모르겠지만,
설령 0이 나온다고 한들 그 결과가 크게 중요하지 않습니다.
왜냐하면 그 결과가 100% 보장되지 않다는 사실에는 변함이 없기 때문이죠.


0

김종현

답변 감사합니다.

이론적으로는 예상한 결과가 맞다는 말씀이시죠?

C#에서의 RAII

0

62

3

TLS 질문드립니다.

0

79

2

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

0

74

2

Unity Span

0

97

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

95

1

Write Read 커서 키워드

0

87

1

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

0

85

2

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

0

111

2

UnhandledException 으로 서버 터지는 경우

0

102

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

92

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

104

2

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

0

152

2

커서의 위치의 중요성

0

110

2

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

0

176

2

강의에 질문이 있습니다

0

92

2

멀티스레드 이해도 질문

0

106

1

500 vs 500

0

147

3

OnAcceptHandler 액션 함수

0

70

1

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

0

203

2

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

0

85

2

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

0

112

1