객체 핸들 (Object HANDLEs) Boost.Asio는 HANDLE에서 다음 유형의 커널 객체에 대해 비동기식 대기 작업을 수행할 수 있는 Windows 지정 클래스를 제공한다: 알림 변경 (Change notification) 콘솔 입력 (Console input) 이벤트 (Event) 메모리 자원 알림 (Memory resource notofication) 프로세스 (Process) 세마포어 (Semaphore) 스레드 (Thread) 대기 가능 타이머 (Waitable timer) 예를 들어, 이벤트에 대해 비동기 작업을 수행하기 위해 다음과 같은 개체를 생성할 수 있다: HANDLE handle = ::CreateEvent(...); windows::object_handle file(my_..
임위-접근 핸들 (Random-Access HANDLEs) Boost.Asio는 일반 파일을 참조하는 HANDLE에서 비동기식 읽기/쓰기 작업을 수행할 수 있는 Windows 전용 클래스를 제공한다. 예를 들어, 파일로 비동기식 작업을 수행하려면 다음과 같이 개체를 생성할 수 있다: HANDLE handle = ::CreateFile(...); windows::random_access_handle file(my_io_context, handle); read_some_at(), async_read_some_at(), write_some_at(), async_write_some_at() 멤버 함수 중 하나를 사용하여 핸들로 데이터를 읽거나 쓸 수 있다. 그러나 스트림용과 동등한 함수(read_some() 등..
스트림-지향 핸들 (Stream-Oriented HANDLEs) Boost.Asio에는 명명된 파이프와 같은 Windows HANDLE에서 비동기식 읽기/쓰기 작업을 수행할 수 있는 클래스가 포함되어 있다. 예를 들어, 명명된 파이프에서 비동기 작업을 수행하려면 다음과 같은 객체를 생성할 수 있다: HANDLE handle = ::CreateFile(...); windows::stream_handle pipe(my_io_context, handle); 그런 다음 동기식이나 비동기식 읽기/쓰기 스트림으로 사용된다. 이것은 개체가 read(), async_read(), write(), async_write(), read_until(), async_read_until() 중 사용 가능한 함수와 함께 사용될 수..
포크 (Fork) Boost.Asio는 fork() 시스템 호출을 사용하는 프로그램을 지원한다. 프로그램이 적절한 시점에 io_context.notify_fork()를 호출할 경우, Boost.Asio는 모든 내부 파일 디스크립터(예: reactor를 깨우는 데 사용되는 "self-pipe-trick" 디스크립터)를 다시 만들 것이다. 알림은 일반적으로 다음과 같이 수행된다: io_context_.notify_fork(boost::asio::io_context::fork_prepare); if (fork() == 0) { io_context_.notify_fork(boost::asio::io_context::fork_child); ... } else { io_context_.notify_fork(boos..