2011-07-23 26 views
11

Tôi khá mới để tăng :: asio, nhưng tôi đang làm việc trên một dự án đã tồn tại trong một vài năm và sử dụng asio rộng rãi. Nhiệm vụ hiện tại của tôi là thêm các số liệu định kỳ về những thứ khác nhau mà hệ thống đang thực hiện. Một trong các số liệu là quan sát mức độ tăng của các hàng đợi công việc :: asio :: io_service và hàng đợi hẹn giờ trở thành thời gian chạy tùy ý. Vì vậy, tôi cần để có thể yêu cầu một tăng: asio :: io_service đối tượng bao nhiêu điều nó có trong hàng đợi của nó.boost :: asio :: io_service chiếm hàng đợi độ dài cho bộ đếm thời gian và bài viết

Để minh họa cho những gì tôi đang hỏi, hãy xem xét những điều sau đây:

boost::asio::io_service asio_service; 

asio_service.post(boost::bind(do_work, "eat")); 
asio_service.post(boost::bind(do_work, "drink")); 
asio_service.post(boost::bind(do_work, "and be merry!")); 

std::cout << "There are " << asio_service.XXXX() 
      << "things in the post() queue and " 
      << asio_service.YYYY() << " timers" 

Có cách nào với tăng ASIO để có được chức năng tương đương với những gì tôi "XXXX()" và "YYYY()" các cuộc gọi được bày tỏ?

Tôi đã xem mã hàng đợi hẹn giờ asio và thấy rằng hàng đợi thực sự chỉ là một vectơ và một danh sách, nhưng cả hai đều là riêng tư. Vì chúng là riêng tư, tôi không thể kế thừa quyền truy cập và tôi không muốn kế thừa hoặc viết một kiểu mẫu khách truy cập kỳ cục để kết hợp mọi thứ cho một cặp số liệu này: truy cập trực tiếp vào các số liệu này sẽ là lý tưởng; phiên bản đặc biệt của tăng cường mà tôi hack-up để cho tôi truy cập sẽ không được lý tưởng: Tôi đang tìm kiếm một cách để làm điều này đã tồn tại trong tăng. Hy vọng rằng tôi không phải là người đầu tiên yêu cầu điều này.

Trả lời

5

Bạn không thể nhận thống kê về hàng đợi io_service mà không cần sửa đổi trực tiếp thư viện asio. Như bạn đã lưu ý, vùng chứa là riêng tư. Kích cỡ của hàng đợi thực sự không quan trọng lắm, vì hiệu suất hoặc công suất phụ thuộc vào các trình xử lý hoàn thành. Những gì tôi đã làm trong quá khứ để giải quyết điều gì đó tương tự là đo thời gian cần thiết để đăng trình xử lý tầm thường tới io_service

+4

+1 mặc dù thực tế không phải là câu trả lời chính xác cho câu hỏi. lấy thông tin về hàng đợi có thể hữu ích để gỡ lỗi –

+1

Độ dài hàng đợi là hoàn toàn hữu ích để gỡ lỗi các vấn đề về hiệu suất, nhưng bản hack nhỏ này cũng là một trợ giúp lớn. – Anne

Các vấn đề liên quan