Rozdział 20. Programowanie asynchroniczne
Załóżmy, że mamy napisać serwer do internetowych pogawędek. Każdemu połączeniu sieciowemu towarzyszy przychodzący pakiet danych, który należy przeanalizować, pakiet wychodzący, który należy zebrać i przygotować, parametry bezpieczeństwa, którymi należy zarządzać, subskrypcje grup, które należy obserwować, i tak dalej. Zarządzanie tymi wszystkimi czynnościami i danymi dla wielu równoczesnych połączeń będzie wymagać pewnej organizacji.
W optymalnym przypadku dla każdego połączenia przychodzącego moglibyśmy uruchamiać odrębny wątek:
use std::{net, thread};
let listener = net::TcpListener::bind(address)?;
for socket_result in listener.incoming() {
let socket = socket_result?;
let groups ...
Get Programowanie w języku Rust now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.