• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Room에서 _objects 자료구조는 안전한가요?

24.02.04 20:16 작성 조회수 214

0

bool Handle_C_LEAVE_GAME(PacketSessionRef& session, Protocol::C_LEAVE_GAME& pkt)
{
	auto gameSession = static_pointer_cast<GameSession>(session);

	PlayerRef player = gameSession->player.load();
	if (player == nullptr)
		return false;

	RoomRef room = player->room.load().lock();
	if (room == nullptr)
		return false;

	room->HandleLeavePlayer(player);

	return true;
}

 

잡큐에서 처리를 한다면 문제가 발생하지 않을거로 보이지만, 잡큐에서 실행하지 않고 room->HandleLeavePlayer 함수를 직접 호출하고 있습니다. _objects 자료구조에 접근하여 제거하는데요 Thread Safe 하지 않을거로 보여서요. 혹시 의도된건지 궁금합니다. 코드 흐름상 이정도는 알아서 수정하세요라는 느낌이 강하지만 혹시나해서 여쭤봅니다.

답변 1

답변을 작성해보세요.

0

네 이 부분은 잡큐로 수정해주셔야 합니다.

이성원님의 프로필

이성원

질문자

2024.02.05

강의를 다시 보니, 영상에서 수정하는 모습이 담겨있네요. 최종본에서 어떤 이유로 수정이 이상하게 올라갔는지 모르겠네요. 강의 잘 보고 있습니다. 감사합니다!