我刚开始使用线程,很快就遇到了一个非常普遍的问题:有太多线程会造成什么影响?
经过一些研究,我变得更加困惑了。
任务
我有16个核心和一个生成1000个对象的应用程序,尽管构造参数保持一致。根据msdn文档和Maximum number of threads,创建1000个线程通常会创建巨大的开销,破坏多线程的性能优势。此外,我必须在3.5 NET 32位限制内(Maximum number of threads in a .NET app?)。
问题1
对于这样一个单边任务,是否可能在计算机上创建比核心更多的线程?.NET是否在优化其中的某些内容?我应该使用的最大线程数是多少?
问题2
是否有简单美观的解决方案,而不是将其排队并限制资源?类似于信号量,我创建了所有1000个线程,但立即使线程处于非活动状态,以便不分配默认线程堆栈?