Tôi không có nhiều kinh nghiệm trong boost::asio
. Tôi có một số câu hỏi khá cơ bản.Chúng ta có cần nhiều io_service cho mỗi luồng cho tăng luồng không :: máy chủ asio với một máy chấp nhận đơn
Tôi có cần phải có một khác nhau io_service
và socket
khác theo một khác nhau thread
nhưng một đơn acceptor
, để xử lý ứng dụng khách trong máy chủ được tạo luồng không?
Tôi tin rằng tôi phải có một ổ cắm khác cho một khách hàng mới. Nhưng nếu tất cả các chủ đề sử dụng cùng một io_service
nó sẽ là song song?
Tôi đã trải qua http://en.highscore.de/cpp/boost/index.html trong phần asio cho biết tôi cần có các io_services khác nhau trong các chuỗi khác nhau để đạt được sự song song.
tôi nếu tôi có kế hoạch để thực hiện một lớp Server tạo ra một new TCPsession
mỗi lần một khách hàng mới xuất hiện trong acceptor.async_accept
và TCPSession
ctor tạo ra một io_service
và thread
và chạy mà io_service.run()
trong chủ đề riêng của mình nó sẽ là một thiết kế tốt ?
Tuy nhiên trong thiết kế này, tôi sẽ tham gia vào tất cả các chủ đề này ở đâu? Tôi có cần một số khác io_service
cho main
để nó không chấm dứt ngay cả trước khi có một Khách hàng mới không?
Sau đó, những gì mà mỗi chủ đề phiên sẽ làm gì? ví dụ. sao tôi không có một phiên trong một chuỗi? để làm cho mỗi phiên song song? Tuy nhiên, tôi phải có <5 phiên đồng thời cùng một lúc. Mặc dù tôi muốn biết giải pháp mục đích chung –
Không, bạn không cần điều đó. Vui lòng đọc phần sau: http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview/core/async.html. Trường hợp duy nhất mà bạn có thể cần thêm các chủ đề là nếu các trình xử lý hoàn thành TCPSession quá nặng (ví dụ, thực hiện các thao tác DB tốn thời gian hoặc lâu hơn). Nhưng sau đó ứng dụng của bạn sẽ không thể mở rộng được, vì vậy bạn phải thay đổi thiết kế để tách hoặc di chuyển một số công việc ra khỏi trình xử lý hoàn tất. –
Vì vậy, nếu tôi chỉ có một ổ cắm khác nhau mỗi phiên Nó sẽ không sao? và tôi có thể phát triển toàn bộ vấn đề trong chuỗi đơn đầu tiên không? và sau đó chuyển sang nhiều chủ đề? –