<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OVERLAPPED :: 태그 :: MoonGameServer.Lab</title>
    <link>https://hugo.moonsd.work/tags/overlapped/index.html</link>
    <description></description>
    <generator>Hugo</generator>
    <language>ko</language>
    <lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://hugo.moonsd.work/tags/overlapped/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Per-IO 데이터 확장 구조</title>
      <link>https://hugo.moonsd.work/%EA%B2%8C%EC%9E%84%EC%84%9C%EB%B2%84%EA%B4%80%EB%A0%A8cs/iocp/02-per-io-%EB%8D%B0%EC%9D%B4%ED%84%B0/index.html</link>
      <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://hugo.moonsd.work/%EA%B2%8C%EC%9E%84%EC%84%9C%EB%B2%84%EA%B4%80%EB%A0%A8cs/iocp/02-per-io-%EB%8D%B0%EC%9D%B4%ED%84%B0/index.html</guid>
      <description>왜 공부했나 기본 구조에서 GetQueuedCompletionStatus로 완료 이벤트를 꺼내는 데까지 갔다. 그런데 꺼내고 나면 바로 막힌다.&#xA;GetQueuedCompletionStatus(hIocp, &amp;transferred, &amp;key, &amp;pOverlapped, INFINITE); // 그래서... 이게 recv 완료야 send 완료야? 완료 큐는 “뭔가 하나 끝났다&#34;만 알려준다. 어떤 소켓의, 어떤 종류의 작업이 끝났는지는 내가 붙여둔 정보로 알아내야 한다. 그 정보를 어디에 어떻게 붙이느냐가 이번 주제다.&#xA;두 종류의 컨텍스트 IOCP는 컨텍스트를 붙일 자리를 정확히 두 개 준다.&#xA;구분 붙이는 곳 수명 담는 것 Per-Handle CreateIoCompletionPort의 완료 키 소켓이 살아있는 동안 세션 객체, 소켓, 주소, 유저 ID Per-IO OVERLAPPED 포인터 I/O 요청 하나가 끝날 때까지 작업 종류(recv/send), 버퍼, 전송량 핵심은 개수가 다르다는 것이다. 세션은 소켓당 하나지만, I/O 요청은 한 소켓에 동시에 여러 개가 떠 있을 수 있다. recv 하나 걸어두고 send 두 개를 동시에 던지면 그 소켓에 대기 중인 작업이 3개다. 그래서 작업별 정보는 세션에 못 넣고, 요청마다 따로 만들어야 한다.</description>
    </item>
  </channel>
</rss>