일부 비동기 TCP 통신을 위해 boost :: asio를 사용할 때 많은 내부 스레드 (3 ~ 4 개)가 시작된다는 것을 알게되었습니다. the documentation에서 읽기, 그것은boost :: asio 내부 스레드
"The implementation of this library for a particular platform may
make use of one or more internal threads to emulate asynchronicity"
지금 내 lib 디렉토리 (클라이언트가 제공되며, 지금 io_service::run()
을 시작하는 일 제외) 추가 스레드를 시작하지 않는 매우 엄격한 요구 사항을 가지고 말한다. boost :: asio가 이러한 추가 스레드를 만드는 것을 막을 수있는 방법이 있습니까?
다른 방법으로는 하나의 스레드에서만 실행할 수있는 비동기 라이브러리가 있습니까?
'BOOST_ASIO_DISABLE_THREADS'가 정의되면, Asio는 쓰래드를 생성하려고 할 때'boost :: asio :: error :: operation_not_supported' 오류를 던집니다. 따라서 유일한 옵션은 스레드 생성 작업을 방지하는 것입니다. 대부분의 구현에서는'async_resolve()'대신'resolve()'를 사용하면됩니다. Windows에서'BOOST_ASIO_DISABLE_IOCP'를 정의하면 Asio가 선택 기반 구현을 사용하게됩니다.이 구현은 느리지 만 추가 스레드를 생성해서는 안됩니다. –
감사합니다. 실제로이 문서를 전혀 찾지 못했습니다. DISABLE_IOCP를 사용해 보겠습니다. – Rolle