Listner 구현 관련
// 그렇지만 pending true인 경우, 즉 지연 된 경우
// AcceptAsync가 완료 되었을 때(클라이언트 소켓이 들어왔을 때) 우리에게 무엇을 보내주도록 맞춰주어야한다.
SocketAsyncEventArgs args = new SocketAsyncEventArgs();
args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted);
RegisterAccept(args);
안녕하세요, Listener 강의 12분 40초 쯤에서
1. " AcceptAsync가 완료 되었을 때 우리에게 무엇을 보내주도록 맞춰주어야한다. " 라고 말씀하셨는데요.
여기서 완료가 의미하는 것이 클라이언트 소켓이 들어올때 말씀하신거 맞나요 ?
2. 그래서 pending이 true면 RegisterAccept()는 호출이 끝나서 메인쓰레드로 들어가고
메인쓰레드는 무한루프로 돌다가 AcceptAsync가 완료되어 이벤트가 호출되면
또다른 작업스레드가 켜지면서 이벤트 핸들러에 등록된 함수를 처리하고
작업쓰레드와 메인쓰레드(while문 무한루프)가 번갈아가면서 실행된다.
맞을까요 ?
3. 제 생각이 맞다면 새로운 작업 쓰레드와 메인쓰레드는 번갈아가면서 실행될텐데 메인쓰레드에서 이벤트가 발생될 때 새로운 작업 쓰레드가 끝나길 기다리는 Join 함수 같은 것은 따로 없나요?
답변 1
1
1+2
네 그렇습니다
3. 제 생각이 맞다면 새로운 작업 쓰레드와 메인쓰레드는 번갈아가면서 실행될텐데 메인쓰레드에서 이벤트가 발생될 때 새로운 작업 쓰레드가 끝나길 기다리는 Join 함수 같은 것은 따로 없나요?
C++서버라면 그렇게 해야 하는데,
C# 서버에서는 자체 관리하는 쓰레드풀에서 쓰레드를 꺼내서
일감을 처리하고 알아서 종료되면 쓰레드풀에서 회수해갑니다.
C#에서의 RAII
0
62
3
TLS 질문드립니다.
0
79
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
74
2
Unity Span
0
97
2
XML, Dll 차이점
0
134
2
Session 질문입니다
0
95
1
Write Read 커서 키워드
0
87
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
85
2
네트워크 Send 전담 스레드 배치
0
111
2
UnhandledException 으로 서버 터지는 경우
0
102
2
컨텐츠 단, 엔진 단
0
118
1
질문 있습니다
0
92
2
C# 게임서버 3D MMORPG
0
159
2
유니티6 버전
0
104
2
receive하는 부분과 send하는 부분의 차이
0
152
2
커서의 위치의 중요성
0
110
2
C++ 전혀 모르는데 C# 서버
0
176
2
강의에 질문이 있습니다
0
92
2
멀티스레드 이해도 질문
0
106
1
500 vs 500
0
147
3
OnAcceptHandler 액션 함수
0
70
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
203
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
85
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
112
1





