내 응용 프로그램은 Boost.Asio chat client example과 매우 유사한 TCP 클라이언트입니다.Boost.Asio 비동기 TCP 클라이언트 및 멀티 스레딩
chat_client :: write를 호출하는 몇 가지 개별 스레드를 추가하고 있습니다. 이것은 do_write 또는 handle_write에 잠금 메커니즘을 추가해야한다는 것을 의미합니까? 권장되는 방법이 있습니까?
내 응용 프로그램은 Boost.Asio chat client example과 매우 유사한 TCP 클라이언트입니다.Boost.Asio 비동기 TCP 클라이언트 및 멀티 스레딩
chat_client :: write를 호출하는 몇 가지 개별 스레드를 추가하고 있습니다. 이것은 do_write 또는 handle_write에 잠금 메커니즘을 추가해야한다는 것을 의미합니까? 권장되는 방법이 있습니까?
아니요,이 경우 (일반적으로) 잠글 필요가 없습니다. 이벤트는 io_service가 실행중인 스레드에서만 처리됩니다. 그것이 하나 일 경우 잠금이 필요하지 않습니다. io_service에 새로운 메시지를 post()하는 것은 이미 다중 호출 스레드로부터 thread로부터 안전합니다.
특정 예에서는 by-reference 대신 chat_message 값을 사용하거나 post() 스레드의 범위를 벗어나 io_service 스레드에서 사용하기를 원할 수 있습니다.
공유 리소스 또는 기타로 인해 어떤 종류의 잠금이 필요한 경우 strands을 확인해야합니다.