io_service::run()의 차단 동작은 작업 및 핸들러 처리에서 비롯됩니다. 다음 때까지 차단된 상태로 유지됩니다.
io_service::run()이 "더 이상 디스패치할 핸들러가 없을 때"까지 차단되면 이는 다음을 의미합니다. 등록된 콜백 형태의 미해결 작업이 없습니다.
첫 번째 예(3a)에서 io_service는 차단합니다. 게시된 세 개의 피보나치 계산 핸들러가 모두 실행될 때까지 run() 내에서.
클라이언트 코드는 비동기 I/O(async_receive)를 사용하는 것처럼 보이지만 효과적으로 동기적으로 동작합니다.
동등한 동기 작업은 다음과 같습니다.
boost::asio::error_code error; std::size_t bytes = socket.receive(buffer, error); // Execute handler with error and bytes
동기 작업과 비동기 작업을 혼합하면 복잡성이 발생할 수 있습니다. 이 관행을 피하는 것이 좋습니다. Boost.Asio 문서는 비동기 프로그래밍의 이점에 대한 귀중한 통찰력을 제공합니다.
위 내용은 `boost::asio::io_service::run()`은 언제 차단됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!