강의

멘토링

커뮤니티

Inflearn Community Q&A

toyboy01138010's profile image
toyboy01138010

asked

[Let's Release It] Unity Casual Mobile MMORPG (M2)

Server Framework

Session Send 멀티스레드 관련

Resolved

Written on

·

181

0

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

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

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

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

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

감사합니다!

 

C#unitymysqlMMORPGef-coreasp.net-web-api

Answer 1

0

Rookiss님의 프로필 이미지
Rookiss
Instructor

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

toyboy01138010's profile image
toyboy01138010

asked

Ask a question