可以创建的最大线程数是多少?在多线程时需要考虑系统配置吗?
What is the maximum number of thread that can be created ? Does system configuration need to be considered when multiThreading
我可以为我的算法创建的最大线程是什么?当我使用多线程时,需要考虑系统配置吗?
我的硬件:Intel(R) Core (TM)2 Duo CPU E8400 @3.00 GHz 2.00 GHz
安装内存:4.00 GB
我可以在我的项目中创建/或使用多少个最大线程?
Windows对线程数没有"硬编码"限制(我看到你用visual c++标记了这个问题,所以它是关于Windows的,是正确的吗?)你必须只考虑你的硬件限制;首先,默认的线程堆栈大小是1兆字节,所以当你创建线程时,你至少需要1兆字节的内存用于堆栈,另外很可能你的自定义代码会分配一些内存。此外,上下文切换对操作系统来说也不是一件容易的事。创建比处理器内核数更多的线程通常是没有意义的,除非线程必须等待一些长时间的操作,比如HTTP请求。因此,理想情况下,您必须在创建线程之前仔细考虑,但是如果您确定需要线程,除了内存和CPU时间外,不要关心任何限制。
这是一个经典的"如果你不得不问,你可能做错了"的例子。创建线程是有成本的,你/操作系统很快就会花更多的时间来管理线程,而不是你从并行任务中获得的时间。
最好的方法是确定cpu的数量,并将创建的线程数量限制在cpu的数量上。这里的CPU是指硬件执行单元。相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 在 C++ 中扩展作业/工作线程多线程系统
- 我们是否需要对多线程 x32 系统使用 lock 来读取或写入 uint32_t 变量
- Unicore系统中多线程程序的好处
- 在多线程c++服务器应用程序中处理非常量全局配置
- 多线程事件系统
- 多线程 - 系统创建的附加线程
- 可以通过减少多线程中系统调用(互斥/信号量)的开销来真正提高性能::atomic
- C++如何检查文件是否在使用-多线程多进程系统
- 可以创建的最大线程数是多少?在多线程时需要考虑系统配置吗?
- 如何使用多线程使系统崩溃
- 发布配置上的Visual Studio c++多线程运行时问题