 Rust 程序设计语言 简体中文版 1.85.0517/562Rust 程序设计语言 简体中文版 有多种技术可以用来避免所有请求都排在慢请求之后,包括我们在第十七章中所使用的异步; 我们将要实现的一个便是线程池。 使用线程池改善吞吐量 线程池(thread pool)是一组预先分配的等待或准备处理任务的线程。当程序收到一个新任 务,线程池中的一个线程会被分配该任务,并负责处理它。其余线程在该线程处理任务的同时 可以处理任何其他接收到的任务。当第一个线程处理完任务时,它会返回空闲线程池中等待处 TcpListener::bind("127.0.0.1:7878").unwrap(); let pool = ThreadPool::new(4); for stream in listener.incoming() { let stream = stream.unwrap(); pool.execute(|| { handle_connection(stream); ThreadPool 接口 我们使用 ThreadPool::new 创建一个具有可配置线程数的新线程池,在这里是四。这样在 for 循环中,pool.execute 有着类似 thread::spawn 的接口,它获取一个线程池运行于每一个流的 闭包。我们需要实现 pool.execute,使其能够接收闭包并将其传递给线程池中的线程执行。这 段代码还不能编译,但我们可以尝试让编译器指导我们如何修复它。 采用编译器驱动开发构建0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0517/562Rust 程序设计语言 简体中文版 有多种技术可以用来避免所有请求都排在慢请求之后,包括我们在第十七章中所使用的异步; 我们将要实现的一个便是线程池。 使用线程池改善吞吐量 线程池(thread pool)是一组预先分配的等待或准备处理任务的线程。当程序收到一个新任 务,线程池中的一个线程会被分配该任务,并负责处理它。其余线程在该线程处理任务的同时 可以处理任何其他接收到的任务。当第一个线程处理完任务时,它会返回空闲线程池中等待处 TcpListener::bind("127.0.0.1:7878").unwrap(); let pool = ThreadPool::new(4); for stream in listener.incoming() { let stream = stream.unwrap(); pool.execute(|| { handle_connection(stream); ThreadPool 接口 我们使用 ThreadPool::new 创建一个具有可配置线程数的新线程池,在这里是四。这样在 for 循环中,pool.execute 有着类似 thread::spawn 的接口,它获取一个线程池运行于每一个流的 闭包。我们需要实现 pool.execute,使其能够接收闭包并将其传递给线程池中的线程执行。这 段代码还不能编译,但我们可以尝试让编译器指导我们如何修复它。 采用编译器驱动开发构建0 码力 | 562 页 | 3.23 MB | 26 天前3
共 1 条
- 1













