32
|
Douglas Anderson · 技术社区 · 16 年前 |
![]() |
1
34
首先,我建议您阅读以下内容: http://blogs.msdn.com/oldnewthing/archive/2007/03/01/1775759.aspx 然后 http://blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx 总之,限制通常是堆栈空间(必须在连续的块中),由于每个线程都会消耗这些分散的空间,因此您很快就会用完连续的块。 在64位机器和操作系统上,这个问题要小得多。 缓解策略是存在的,但只会走这么远(并且依赖于每个线程不使用太多堆栈) 作为粗略的指导:
无论如何,你可能不需要创建超过十个(如果你真的 做 你应该已经知道这些信息了) |
![]() |
2
24
当我问这些问题时,我听到的最好的答案是:
|
![]() |
3
14
请注意,如果你担心达到这个极限,你应该仔细检查你的设计!!!!!!!! 关于发生什么的“更重要的问题”的答案是OutOfMemoryException。 这不是一个直接的答案,但这里有一些代码可以找出限制。不过,它可能取决于可用内存。我有兴趣看看其他OS/cpu/mem的结果。 请随时编辑和添加您的机器:
|
![]() |
4
1
默认堆栈大小为1MB,在32位windows操作系统下分配给windows进程的用户模式地址空间约为2GB。每个进程允许大约2000个线程(2000*1MB=2GB)。对于64位,实际上不存在这样的问题。 |
![]() |
5
1
请阅读Raymond Chen的博客文章 ShuggyCoUk's answer 指向。 但要特别注意这一点:
|
![]() |
6
1
据我所知,自Win2K以来,整个线程模型应该没有太大变化。 线程本身没有真正的限制,更多的是进程堆栈空间的限制。看a in-depth explanation of threading limits 关于此事的更多细节,请联系Raymond Chen。 |
![]() |
7
0
如果你被一个利用大量线程的现有设计所困扰,需要扩展,你也可以考虑光纤: http://msdn.microsoft.com/en-us/library/ms682661%28v=vs.85%29.aspx 它可以为您节省完全重新设计的时间。 Indy认为这是Indy 10,但它从未发生过,因为。NET冒险似乎占据了大部分时间。 |
![]() |
8
0
这个问题似乎很古老,但我想补充一下,这对其他人也有帮助: 这篇文章关于:突破Windows的极限:进程和线程 http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |