C++ 소켓 크로스 플랫폼 개발 - 2

지난 글에서 리눅스와 윈도우에서 동시에 같이 사용할 수 있는 소켓 클래스를 만들어 봤습니다. 이번 글에서는 소켓에 데이터가 들어오는 것을 감지하고 처리할 수 있는 EventLoop 객체를 만들어 보겠습니다. 👍 EventLoop 객체에 사용되는 비동기 IO 처리 역시 운영체제별로 다르므로 각 운영체제에 맞게 구현해야 하며 사용되는 메커니즘은 아래와 같습니다. 🤖 I/O 이벤트 처리 방식 구분 Linux Windows 모델 epoll IOCP 방식 I/O 준비가 되면 알림 비동기 작업이 완료되면 알림 의미 읽기/쓰기를 진행할 수 있음 제출한 읽기/쓰기 작업이 끝남 처리 직접 recv()/send() 등을 호출하여 처리 시작 완료된 결과를 확인한 후 후속 작업 처리 API epoll_create1(), epoll_ctl(), epoll_wait() CreateIoCompletionPort(), GetQueuedCompletionStatus() 간단하게 리눅스에서는 알림이 오면 소켓 버퍼에서 직접 데이터를 가져오면 되고 윈도우에서는 미리 “데이터를 이 버퍼에 받아주세요....

2026년 10월 30일 · 8 min · 1599 words · JongBin

콜백 개념 및 C# 델리게이트 사용 방법

멀티 스레딩 환경 또는 다른 백그라운드 작업에서 어떤 일을 시키고 끝났는지 확인해야 하는 경우가 있습니다. 일이 끝났니? 첫 번째 방법으로는 주기적으로 일을 다 끝냈는지 체크하는 방식이 있습니다. 주기가 짧을수록 체크하는 횟수가 많아지고, 그만큼 일이 종료됐는지 빨리 체크할 수 있지만 언제 종료될지 모르는 일을 체크하기 위해 반복문으로 끊임없이 체크해야 합니다. 이는 자원 낭비로도 이어질 수 있습니다. 반대로 주기를 길게 두고 체크한다면 끝나는것은 감지하겠지만 정확히 어느 시점에 끝났는지 감지하는 것은 어려울 것입니다....

2025년 04월 20일 · 3 min · 594 words · JongBin