인프런 커뮤니티 질문&답변

toyboy0113님의 프로필 이미지

작성한 질문수

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

서버 프레임워크

Session Send 멀티스레드 관련

해결된 질문

24.08.18 21:52 작성

·

91

0

안녕하세요 Session쪽 Send 만들어 보고 있습니다.
구현하면서 궁금한게

Send에서 lock을 잡고 RegisterSend쪽에서는 lock을 잡지 않는 상황인데

RegisterSend에서 하나의 스레드가 들어와서 while문을 돌면서 sendQueue를 Dequeue하고 있는데
이 과정에서 다른 스레드가 Send에서 sendQueue Enqueue를 할 수 있지 않나 생각이 듭니다.

그래서 RegisterSend에서 적어도 while문에는 lock을 걸어줘야 공유자원 _sendQueue에 대해서 안전하게 처리 될 수 있지 않나라고 생각 하는데

만약 안전하다면 왜 안전한지에 대해서 듣고 싶습니다.

감사합니다!

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2024. 08. 20. 18:12

RegisterSend 자체에서는 락을 잡지 않으나,
RegisterSend를 호출하는 쪽 (Send와 OnSendCompleted)에서
모두 락을 잡고 있어서 _sendQueue 경합 문제는 발생하지 않습니다.