Lig*_*ica 19
[C++11: 1.10/1]:[..]在托管实现下,C++程序可以同时运行多个线程.[..]在一个独立的实现中,它是实现定义的,一个程序是否可以有多个执行线程.
[C++11: 30.3/1]:30.3描述了可用于创建和管理线程的组件.[注意: 这些线程旨在与操作系统线程一对一映射. - 尾注]
所以,基本上,它完全取决于实现和操作系统; C++不关心!
它甚至没有列出附件B"实施数量"中的建议!(实际上这似乎是一个遗漏).
Bal*_*Pal 14
C++作为语言没有指定最大值(甚至超过一个最小值).特定的实现可以,但我从未看到它直接完成.操作系统也可以,但通常只是表示受系统资源限制的lank.每个线程都会占用一些非分页内存,选择器表和其他绑定内容,因此您可能会用完它.如果不这样做,如果线程确实有效,系统将变得非常无响应.
从另一方面来看,真正的并行性受到系统中实际内核的限制,并且您不会有太多线程.出于良好的实际原因,可能在逻辑上产生数百或数千的应用程序通常会开始使用线程池.
基本上,您的C++ 应用程序级别没有限制.操作系统级别上的最大线程数量更多(基于您的体系结构和可用内存).
在Linux上,每个进程的最大线程数没有限制.线程数量受系统限制.您可以通过执行以下操作来检查允许的最大线程数:
cat /proc/sys/kernel/threads-max
Run Code Online (Sandbox Code Playgroud)
在Windows上,您可以使用testlimit工具检查最大线程数:http: //blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx
在Mac OS上,请阅读此表以根据您的硬件配置查找线程数
但是,请记住,您使用的是多任务处理系统.同时执行的线程数受可用处理器核心总数的限制.为了做更多的事情,系统试图在所有这些线程之间切换.每个"开关"都有一个执行(几毫秒).如果你的系统"切换"太多,它将不会加快太多时间"工作",你的整个系统将会很慢.
| 归档时间: |
|
| 查看次数: |
13130 次 |
| 最近记录: |