gpt4 book ai didi

c++ - 创建线程总是对性能有好处吗?

转载 作者:行者123 更新时间:2023-12-01 14:35:47 24 4
gpt4 key购买 nike

我最近开始尝试在 std::thread 中使用线程,我想知道使用线程是否有任何缺点(特别是在 c++ 中)。是否存在添加更多线程会降低性能的情况?例如,如果我正在创建多个新线程,每个线程都运行一个服务器对象来监听传入的数据,那么为每个服务器实例创建一个新线程是否不好(性能方面)?为什么/为什么不?

最佳答案

创建过多线程确实会影响性能。

例如,如果每个服务器实例都有一个线程,那么您不能在不切换线程的情况下为一个服务器实例工作然后为另一个服务器实例工作。切换线程会产生成本。

另一个问题是当两个或多个线程试图访问同一个信息集合时。这会导致争用,从而降低整个系统的速度。现代 CPU 具有多个内核,内核间资源有限。争用相同对象的线程会使这些内核间总线饱和。

您一定要避免在不创建更多线程的情况下无法完成“更多工作”的设计。如果您有三台服务器并且每台服务器都有一个线程,那很好。如果您有数百个客户端并且有一个由十个线程组成的池来为它们提供服务,那很好。如果您有一些特殊的事情要做(比如监控时钟变化)最好由它们自己的线程完成,那也很好。

但通常,有大量工作要做的服务器应该将工作分配给固定的线程集合。该集合中的线程数应基于系统拥有的内核数、可以同时有效挂起的 I/O 数以及预期的意外延迟量(例如硬页面错误) .

关于c++ - 创建线程总是对性能有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62961148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com