• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

C# 비동기 처리 방식 질문드립니다.

22.04.26 22:09 작성 조회수 628

0

C++은 IOCP모델에서 쓰레드를 직접 생성해서 IOCP의 쓰레드풀을 통해 관리되고, 비동기 함수가 완료되면 쓰레드풀에 있던 대기상태의 쓰레드가 실행상태로 바뀌면서 작업을 처리하는 방식이라면

C#은 직접 쓰레드를 생성하지 않을뿐이지 비동기 함수를 이용하면 알아서 쓰레드풀에서 쓰레드를 생성하고 관리하는 것 같던데 비동기 함수 사용하는 순간 C++ IOCP처럼 사용한다고 생각하면 될까요?

아직 뒷강의를 보진 않았지만 위 말이 맞다면 Send,Recv 비동기 함수도 AcceptAsync함수처럼 처리하면 되는지 궁금합니다.

 

 +질문으로.. C++을 처음 공부할 때 예외처리문을 멀리하고, 예외상황이 발생하면 차라리 Crash를 터트리고 문제상황을 고치는게 좋다고 배웠는데 C#은 문제가 발생하면 항상 예외를 던지더라구요. C#을 쓸땐 try~catch같은 예외처리문을 항상 사용하는게 좋은 습관이 될까요?

 

답변 1

답변을 작성해보세요.

0

c#도 리눅스, 윈도우냐에 따라 내부 구현이 다르고
기본적으로 윈도우에선 iocp 모델을 사용한다고 하니 다를 바가 없습니다.
두번째로 C# 네트워크 코드에서 어쩔 수 없이 try catch로 감싸줘야 합니다!
하지만 모든 코드를 다 try-catch 하면 오히려 크래시 상황을 잡기 어려워 별로 추천하진 않습니다.

DWG담님의 프로필

DWG담

질문자

2022.04.26

감사합니다. 확실히 C#이 많이 편리하긴하네요. 다만 try-catch가 익숙치 않아 적응하는게 좀 걸릴듯하네요ㅠ