• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

Packet Queue 질문

21.03.08 05:21 작성 조회수 243

0

안녕하세요. "Rookiss"님,

Packet Queue에 대해서 질문드리려고 합니다.

Push() 에 대해서는 BackGround Thread가 계속 Push하므로 lock을 거는 이유가 맞다고 생각되는데 Pop()에 대해서는 Unity의 Main-Thread만 사용한다면 따로 lock을 걸 필요가 없다고 생각되는데 혹시 다른 이유가 있어서 lock을 거신건가요??

답변해주시면 감사하겠습니다!

답변 1

답변을 작성해보세요.

4

Pop을 유니티 메인 쓰레드에서만 사용하는 것은 맞지만,
동일한 데이터를 다른 쓰레드들이 Push를 하면서 건드리고 있기 때문에
유니티 메인 쓰레드에서도 lock을 걸어줘야 합니다.
lock은 함수 단위가 아니라 데이터 단위로 생각하셔야 합니다.

Queue 및 기타 자료구조에 대해, 
한 쓰레드는 Push만 하고 한 쓰레드는 Pop만 하면
문제가 없다고 생각할 수도 있지만,
자료구조 내부 로직을 잘 생각해보면 문제가 된다는 걸 알 수 있습니다.