Có ai có bất kỳ ý tưởng nào về hiệu suất tương đối của GAsyncQueue của GLib so với thông báo POSIX message_queue cho giao tiếp giữa các luồng không? Tôi sẽ có nhiều thông điệp nhỏ (cả một cách và các kiểu yêu cầu-đáp ứng), sẽ được thực hiện trong C trên đầu Linux (hiện tại; có thể được chuyển sang Windows sau). Tôi đang cố quyết định cái nào nên sử dụng.GAsyncQueue của GLib so với thông báo POSIX_queue
Điều tôi đã biết là sử dụng GLib tốt hơn cho mục đích di động, nhưng POSIX mq có lợi thế là có thể chọn hoặc thăm dò ý kiến trên chúng.
Tuy nhiên, tôi chưa tìm thấy bất kỳ thông tin nào có hiệu suất tốt hơn.
Rất thú vị. Tôi đã upvoted câu trả lời và câu hỏi của bạn, có lẽ nó bây giờ sẽ cho phép bạn đăng các đồ thị. – kalev
Tôi đã chạy một số thử nghiệm khác: thêm tín hiệu giữa các chuỗi để cho người tiêu dùng biết rằng dữ liệu đã được tạo. Tôi đã sử dụng kỹ thuật Linux eventfd. Và ngay sau khi tôi đã làm như vậy, tôi thấy hiệu suất của GAsyncQueue làm suy giảm để được tương tự như những người khác. – dbikash
Điều này có giải thích các kết quả không? Đó là tất cả các cơ chế IPC Linux đi qua hạt nhân và do đó có hiệu suất tương tự. GAsyncQueue bằng cách nào đó đã thực hiện không gian người dùng - không gian người dùng bổ sung - sao chép không gian hạt nhân được tránh, dẫn đến hiệu suất tốt hơn. Và ngay sau khi cơ chế eventfd được thêm vào, một lần nữa hạt nhân đi vào hình ảnh. Sự hiểu biết đó có đúng không? – dbikash