2013-04-16 3 views
2

현재 선형 순서로 작업을 수행하는 가닥이 있습니다. 나는 아니오를 얻는 방법이 있는지 알고 싶었다. 스트랜드 큐에있는 작업 수가닥 수를 얻을 수 있습니까?

+0

신뢰할 수있는 답변을 얻을 수있는 방법이 없기 때문에 의심 스럽지만 (확실하지 않으므로 답변이 아닙니다.) 다른 스레드가 대기열을 검사하고 정보를 처리하는 스레드간에 작업을 게시 할 수 있습니다. –

+0

개인 회원 (회원이라고 생각합니다)은 회원으로 구성되어 있습니다. 하지만 액세스 할 수 없습니다. – Rajeshwar

+1

어떤 버전의 Boost.Asio를 사용하고 있습니까? Boost 1.35에서 1.53까지, 나는 operation queue의 크기를 포함하는 멤버를 갖는'strand '를 기억할 수 없다. –

답변

2

쉬운 방법은 없습니다. strand 정보에 액세스하거나 수를 직접 포함하는 공개 수단을 제공하지 않습니다. private 멤버 변수에 액세스하면 count_을 통해 strand::impl_ 사이의 크기를 얻을 수 있습니다.

대체 방법은 다음과 같습니다

  • 비슷한 API 증가 및 감소 수를 제공하는 strand 포장. 이 새로운 유형은 사용자 핸들러가 실행을 완료하면 카운트를 감소시키기위한 후크를 주입해야하기 때문에 게시되는 모든 핸들러를 래핑해야합니다.
  • 생성 중에 카운트를 증가시키고 파기하는 동안 카운트를 감소시키는 펑터 개체를 만듭니다. 배치되는 모든 핸들러는 묶여서 전달되거나 펑터가 래핑됩니다.
관련 문제