【发布时间】:2012-11-19 16:26:58
【问题描述】:
我最近比较了 .NET 中的 OmniThreadLibrary 和 ThreadPool,我发现 Omni 在最大线程数方面受到更多限制——允许 60 个——而 .NET 可以达到 32768 在 .NET 4.0 中。
为什么会有这样的限制?
【问题讨论】:
-
可能还有其他原因。那就是堆栈大小。 Delphi 中的默认设置是为每个线程的堆栈分配 1MB 的地址空间。在 32 位进程上,您将遇到大约 1000 个线程数的问题,尽管内存未使用,但仍会引发内存不足异常。这是由于 32 位应用程序的 2.1GB 可用地址空间。
-
@MikeT 顺便说一句,如果您将多进程与 IPC 一起使用,则可以绕过这一点。那么你就可以拥有 60 多个线程。
标签: delphi delphi-xe2 omnithreadlibrary