inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Series Phát triển Game MMORPG với C# và Unity] Part4: Game Server

ReaderWriterLock

Monitor 방식과 SpinLock 등 방법들의 관계

439

leomessi

50 câu hỏi đã được viết

1

lock 키워드와 Monitor는 임계 영역 자체를 만드는 방법에 대한 것이고,

SpinLock, Context Switching, Event는 임계 영역을 사용하기 위한 순서를 결정하는 알고리즘이라고 생각해도 되나요?

그리고 Context Switching은 실행중인 스레드가 대기 상태로 돌아가고, 대기중이던 스레드를 실행하기 위해 메모리에 스레드의 상태를 저장 및 적재하는 일련의 과정이라고 말씀해주셨는데요, Context Switching을 사용하여 Lock을 구현하는 방법을 이르는 용어가 따로 있는지 궁금합니다.

network unity C#

Câu trả lời 2

2

Rookiss

lock 키워드와 Monitor는 임계 영역 자체를 만드는 방법에 대한 것이고,
-> lock은 C# 표준에서 제공하는 락 기능입니다.
상호배타적 특성을 갖고 있지만 내부적으로 어떻게 만들어졌는지 문서화된 바는 없습니다.
(이것은 컴파일러에 따라 다를 수 있겠죠)

SpinLock, Context Switching, Event는 임계 영역을 사용하기 위한 순서를 결정하는 알고리즘이라고 생각해도 되나요?
-> 락의 상호배타적 특성을 구현하는 방법이 여러가지가 있는데,
스핀락은 '루프를 돌면서 계속 점유를 시도하는' 방법을 채택하는 락을 말합니다.
유저레벨에서 루프를 돌지 않을거라면,
이벤트 방식으로 원하는 상황이 왔을 때
신호를 받는 방법으로도 만들 수 있는데,
이를 위해 커널에서 제공하는 Event를 사용하는 것입니다.
Event는 운영체제에서 지원하는 일종의 '통신 도구'이지
딱히 락에 종속적인 개념은 아닙니다.
물론 알고리즘 또한 아니며, 단순히 커널 레벨에 존재하는 어떤 객체 (커널 오브젝트) 입니다.
이를 이용해서 특정 상황에 시그널을 주고 받을 수 있습니다.

Context Switching은 쓰레드끼리 교환이 일어날 때,
기존 쓰레드의 정보를 저장하고 깨울 쓰레드의 정보를 복원하는 일련의 과정을 말하며
락을 쓰지 않더라도 늘상 발생하고 있는 자연스러운 현상입니다.
따라서 [CS, Event가 임계 영역을 사용하기 위한 순서를 결정하는 알고리즘]은 살짝
의미가 다를 수 있습니다.

그리고 Context Switching은 실행중인 스레드가 대기 상태로 돌아가고, 대기중이던 스레드를 실행하기 위해 메모리에 스레드의 상태를 저장 및 적재하는 일련의 과정이라고 말씀해주셨는데요, Context Switching을 사용하여 Lock을 구현하는 방법을 이르는 용어가 따로 있는지 궁금합니다.

-> [Context Switching을 사용하며] Lock을 구현하는 것은 아니고,
단지 불필요하게 유저레벨에서 체크하지 않도록
잠시 소유권을 커널에 내주는 것입니다.
Context Switching 자체로는 Lock에 도움을 주는 것이 아니기에
당연히 [CS를 사용하여 Lock을 구현하는 방법]이라는 용어도 없습니다.

0

leomessi

헷갈렸던 개념들이 좀 정리된 것 같습니다. 감사합니다.

TLS 질문드립니다.

0

57

2

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

0

57

2

Unity Span

0

82

2

XML, Dll 차이점

0

111

2

Session 질문입니다

0

84

1

Write Read 커서 키워드

0

79

1

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

0

76

2

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

0

100

2

UnhandledException 으로 서버 터지는 경우

0

91

2

컨텐츠 단, 엔진 단

0

108

1

질문 있습니다

0

78

2

C# 게임서버 3D MMORPG

0

153

2

유니티6 버전

0

100

2

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

0

135

2

커서의 위치의 중요성

0

105

2

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

0

171

2

강의에 질문이 있습니다

0

89

2

멀티스레드 이해도 질문

0

98

1

500 vs 500

0

132

3

OnAcceptHandler 액션 함수

0

64

1

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

0

194

2

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

0

84

2

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

0

107

1

스핀락 질문.

0

111

2