inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Lock 기초

lock 사용에 있어 근본적 질문

해결된 질문

320

김종민

작성한 질문수 3

1

안녕하세요 강의 잘 듣고 있습니다.

전역변수 사용에 있어 원자화 되지 않은 함수들로 인한 race condition 문제로 저희가 원하지 않는 값들이 return 되기에 lock을 사용하여 해당 lock동안에는 다른 Thread의 사용을 방지한다고 이해하였습니다.

그렇기 때문에 lock의 사용이 빈번해진다면 전반적으로 코드의 구성도 복잡해지고 성능 측면에서도 좋지 못하다 이해하였고, 그렇다면 lock의 사용은 변수를 공유하지 않는 부분에서는 필요치 않을까? 하는 의문이 들었습니다.

나아가 만약 lock을 사용하는 Thread가 있다면, 그 기간 동안에는 lock을 사용하지 않는 다른 Thread들 도 lock의 명령어들이 끝날 때까지 기다려야 하는 것인지 궁금합니다.

 

C# unity 네트워크

답변 1

1

Rookiss

그렇기 때문에 lock의 사용이 빈번해진다면 전반적으로 코드의 구성도 복잡해지고 성능 측면에서도 좋지 못하다 이해하였고, 그렇다면 lock의 사용은 변수를 공유하지 않는 부분에서는 필요치 않을까? 하는 의문이 들었습니다.
-> 네 당연히 데이터 경합이 일어나지 않으면 사용할 이유가 전혀 없습니다.

나아가 만약 lock을 사용하는 Thread가 있다면, 그 기간 동안에는 lock을 사용하지 않는 다른 Thread들 도 lock의 명령어들이 끝날 때까지 기다려야 하는 것인지 궁금합니다.
-> 네 그렇습니다. 공유 데이터에서 lock을 걸면 최대한 빨리 볼 일 보고 풀어줘야 하는데,
이런 저런 이유로 lock을 오래 잡고 있으면 나머지 쓰레드는 대기를 타게 됩니다.

TLS 질문드립니다.

0

50

2

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

0

54

2

Unity Span

0

80

2

XML, Dll 차이점

0

109

2

Session 질문입니다

0

81

1

Write Read 커서 키워드

0

77

1

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

0

72

2

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

0

99

2

UnhandledException 으로 서버 터지는 경우

0

88

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

77

2

C# 게임서버 3D MMORPG

0

150

2

유니티6 버전

0

99

2

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

0

134

2

커서의 위치의 중요성

0

104

2

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

0

170

2

강의에 질문이 있습니다

0

86

2

멀티스레드 이해도 질문

0

96

1

500 vs 500

0

130

3

OnAcceptHandler 액션 함수

0

64

1

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

0

193

2

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

0

83

2

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

0

107

1

스핀락 질문.

0

110

2