Gri*_*yan 0 c++ multithreading visual-studio c++11 visual-studio-2012
我在vs2012中编写了一个正确工作的多线程代码.令我感到惊讶的是,我分离了近10000个线程,它没有任何问题.显然,线程数量不能同时处理,因此其中一些线程暂停,直到其他线程工作.
我想知道在vs2012中是否存在一些选项来设置允许同时工作的最大线程数量.我特别要求在线程切换时不要浪费太多时间.
此外,我想管理允许我的线程使用的内存总量.
提前致谢.
限制产生的线程数是你的职责.
至于他们使用的内存,除了堆栈(我将回到下面),它与你的程序的其余部分完全没有区别.实际上,这是使用线程而不是多个进程(fork用Unix术语)的全部要点:它们共享相同的内存.由于操作系统将线程所做的任何分配视为来自您的进程(而不是来自特定线程),因此您无法人为地限制单个线程的内存使用.
关于分配给每个线程的堆栈内存:你可能想要阅读我关于这个主题的答案(特别是第一点),希望你会发现尝试减少线程的堆栈大小是没有意义的.
总而言之,线程与程序的任何其他部分一样:您不能对其数量或允许分配的内存量(在您的机器可以处理的范围内)设置硬限制, 当然).同样,作为程序员,您的工作是正确管理资源,而不是编译器的工作,而不是操作系统的工作.
你想要少于10000个线程?然后就是不要在第一时间产生它们.你希望他们使用更少的内存?然后不要首先分配那个内存.您所要做的就是在代码中加入必要的安全措施.
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |