inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

화살 #1

Remove함수의 _lock 설정

해결된 질문

302

sounds good

작성한 질문수 13

0

안녕하세요

다음과 같은 Remove함수에서 GetObjectTypeById에 대한 결과값을 받아올때 lock을 걸지 않으신 이유가 궁금합니다.

public bool Remove(int objectId)

{

GameObjectType objectType = GetObjectTypeById(objectId);

lock (_lock)

{

if(objectType == GameObjectType.Player)

return _players.Remove(objectId);

}

return false;

}

예를들어 멀티쓰레드 환경에서 Remove 함수가 두번 호출된다면  나중에 입력된 objectId에 대해서만 Remove만 실행되지 않을지 궁금합니다~

C# unity

답변 1

3

Rookiss

멀티쓰레드라고 항상 문제가 되는 것은 아니고 
공유하는, 즉 동시에 접근할 수 있는 데이터에 한해서 문제가 됩니다.
여기서 공유라 함은 힙이나 static 영역에 있는 데이터이고,
스택은 별다른 문제가 없습니다.

함수가 호출 될 때, 호출 인자 (여기서는 int objectId)는
스택(혹은 레지스터)에 저장되는데,
쓰레드마다 스택 영역은 고유하기 때문에 문제가 없습니다.

MessagePack

0

85

1

본인 플레이어 이동 관련 질문

0

49

1

Part7 Part9 질문이 있습니다.

0

72

1

.

0

116

1

.

0

105

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

92

1

타일 팔레트 깔았는데도 안돼요

0

116

2

2D로 그냥 만들어도 되나요?

0

81

2

지난 강의와 이어지는게 맞을까요?

0

80

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

162

2

유니티 클라와 C++서버연동

0

277

2

멀티플레이 테스트 환경 관련 질문입니다

0

207

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

150

2

코드 관련한 몇 가지 질문입니다!

0

153

2

3d 프로젝트 이동 동기화 관련

0

321

4

파트 7 스트레스 테스트 질문 드립니다.

1

189

2

맵 이동 방식

0

133

0

맵 이동 관련해서 질문드립니다.

0

91

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

201

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

160

1

[팁] 2024년 기준 버전 이슈?

0

455

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

203

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

336

2

PushAfter 사용 질문

0

192

1