《C++并发编程》之正确使用thread和jthread C++11从语言层面引入了多线程编程的能力,使得开发者可以通过标准库提供的 thread 等库实现跨平台的多线程编码。标准库中的 thread 等库为开发者屏蔽了不同平台下的多线程实现细节,提供了统一的编程接口,并且可以和标准库中的其它库一同使用,提高程序的开发效率。
【muduo源码学习】多线程下的 one loop per thread 多线程多Reactor模型的实现,主要涉及 Thread、EventLoopThread 和 EventLoopThreadPool 这三个类,下面依次进行介绍。
【muduo源码学习】one-loop-per-thread核心原理 在 TCP 网络编程中,这里我们特指在单机的环境下,主要关注两件事。第一,如何正确的处理TCP的连接和断开,以及正确处理数据的收发;在错综复杂的网络环境中,这并非易事,涉及很多细节。第二,如何榨干机器的性能,即如何让单台机器在已有的硬件条件下处理尽可能多的连接请求;这需要设计一种高效的网络模型。
优先考虑基于任务的编程而非基于线程的编程 而 async 以一种隐式的方式开启一个异步任务,”看不到线程“,从编码模式上看,和同步编程的模式类似,对比基于线程的编程方式,基于任务的设计为开发者避免了手动线程管理的痛苦(这种调用方式将线程管理的职责转交给C++标准库的开发者),并且自然提供了一种获取异步执行程序的结果(即返回值或者异常)的方式。async 和 thread 的另一个重要区别为,async 没有将创建的线程 detach 的机制,因此在调用 async 的作用域中,会等待 async 执行的异步任务完成之后才会离开其作用域。