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.