* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고
뇌를 자극하는 윈도우즈 시스템 프로그래밍 |
product.kyobobook.co.kr
[지금 무료]뇌를 자극하는 윈도우즈 시스템 프로그래밍 강의 | 한빛미디어 - 인프런
한빛미디어 | , [사진] 1. 강좌 소개 한빛미디어(주) 에서 발간한 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 의 저자 윤성우 님이 직접 강의하는 온라인 강좌입니다. 이미 여러 저서와 온라인
www.inflearn.com
* 블로킹(Blocking) 함수
호출되면 작업이 완료될 때까지 반환하지 않는 함수
* 동기(Synchronous) I/O - 블로킹 함수
블로킹 함수를 활용한 입출력 연산
* 넌블로킹(Non-Blocking) 함수 - 넌블로킹 함수
작업의 완료 여부와 상관없이 즉시 반환하는 함수
* 비동기(Asynchronous)I/O
작업이 완료되기 전에 다른 처리를 계속할 수 있는 입출력 방식
* Windows에서는
기본적으로 중첩(Overlapped) I/O 방식, 완료루틴(Completion Routine) 확장 I/O 방식
이 두 가지 방식의 비동기 I/O를 지원한다
(1) 중첩(Overlapped) I/O
WriteFile 함수
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-writefile
WriteFile 함수(fileapi.h) - Win32 apps
지정된 파일 또는 I/O(입출력) 디바이스에 데이터를 씁니다.
learn.microsoft.com
GetOverlappedResult 함수
https://learn.microsoft.com/ko-kr/windows/win32/api/ioapiset/nf-ioapiset-getoverlappedresult
GetOverlappedResult 함수(ioapiset.h) - Win32 apps
지정된 파일, 명명된 파이프 또는 통신 디바이스에서 겹치는 작업의 결과를 검색합니다.
learn.microsoft.com
(2) 완료루틴(Completion Routine) I/O
WriteFileEx 함수
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-writefileex
WriteFileEx 함수(fileapi.h) - Win32 apps
지정된 파일 또는 I/O(입출력) 디바이스에 데이터를 씁니다. 쓰기가 완료 또는 취소되고 호출 스레드가 경고 대기 상태에 있을 때 완료 상태를 비동기적으로 보고하고, 지정된 완료 루틴을 호출
learn.microsoft.com
ReadFileEx
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-readfileex
ReadFileEx 함수(fileapi.h) - Win32 apps
지정된 파일 또는 I/O(입력/출력) 디바이스에서 데이터를 읽습니다. 읽기가 완료 또는 취소되고 호출 스레드가 경고 대기 상태에 있을 때 완료 상태를 비동기적으로 보고하고, 지정된 완료 루틴
learn.microsoft.com
SleepEx
https://learn.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-sleepex
SleepEx 함수(synchapi.h) - Win32 apps
지정된 조건이 충족될 때까지 현재 스레드를 일시 중단합니다.
learn.microsoft.com
* APC(Asynchronous Procedure Call)
비동기 함수 호출 메커니즘
User-mode APC와 Kernel-mode APC로 나뉨
* User-mode APC
모든 쓰레드는 자신만의 APC Queue라는 것을 가지고 있다
APC Queue에는 비동기적으로 호출되어야 할 함수들과 매개변수 정보가 저장된다
저장되었다고 바로 호출되는 것이 아니라, 쓰레드가 알림 가능 상태(Alertable State)에 놓이게 될 때 비로소 호출된다
* INVALID_HANDLE_VALUE
ㄴ 유효하지 않는 핸들을 나타내는 특별한 값
ㄴ -1을 LONG_PTR로 변환 후 다시 HANDLE로 변환
'IT공부 > IT서적' 카테고리의 다른 글
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 21장. Dynamic Linking Library (0) | 2025.03.12 |
---|---|
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 20장. 메모리 관리 (0) | 2025.03.11 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 18장. 파일 I/O와 디렉터리 컨트롤 (0) | 2025.02.27 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 17장. 구조적 예외처리(SEH) 기법 (0) | 2025.02.25 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 15장. 쓰레드 풀링(Pooling), 16장. 컴퓨터 구조 - 4 (0) | 2025.02.20 |