해결된 질문
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
2024. 08. 20. 18:12
RegisterSend 자체에서는 락을 잡지 않으나,
RegisterSend를 호출하는 쪽 (Send와 OnSendCompleted)에서
모두 락을 잡고 있어서 _sendQueue 경합 문제는 발생하지 않습니다.