2009-12-03 4 views
3

부스트 Documentation에 따르면 다중 스레드를 사용하면 io_service::run()을 호출하면 IO 서비스가 비동기 작업을 수행하는 데 사용할 수있는 스레드 풀을 설정할 수 있습니다. 풀에 조인 된 모든 스레드는 동등한 것으로 간주됩니다.Boost.Asio로 읽기 및 쓰기를 위해 별도의 스레드를 사용할 수 있습니까?

이것은 소켓 읽기 전용 쓰기 스레드와 쓰기 전용 스레드를 가질 수 없다는 것을 의미합니까? 가능하다면 어떻게 구현할 수 있습니까?

답변

5

io_service::run()을 호출하는 모든 스레드를 사용하여 비동기 처리기를 호출 할 수 있습니다. 그러나 어느 스레드가 어떤 유형의 작업을 실행하는지 구체적으로 지정할 수는 없습니다. 예를 들어, 2 개의 백그라운드 스레드에서 io_service :: run()을 호출하고 주 스레드에서 socket::async_sendsocket::async_receive을 호출하면 핸들러는 현재 사용 가능한 모든 백그라운드 스레드에서 실행됩니다. 따라서 모든 스레드는 기본적으로 동등한 것으로 간주되며 비동기 작업에 사용될 수 있습니다.

관련 문제