|
|
1
2
如果您致力于编写自己的线程池,这可能没有帮助,但我会尝试使用.NET ThreadPool类,并根据需要使用SetMaxThreads/SetMinThreads和GetMaxThreads/GetAvailableThreads对其进行调优。这还不够好,有什么特别的原因吗? 去年我在PDC,参加了Joe Duffy关于并行性的一些演讲,这些演讲非常有趣。我记得他说的是在.NET中提供一个可扩展的线程池类,因为MSFT通常会发现,当人们去编写自己的线程池时,他们大部分时间都可以很好地工作,但在边缘情况下会被各种问题所困扰。通过提供一种可扩展性机制,他们希望限制开发人员被抓住的可能性。 |
|
|
2
0
更新: 您可以启用 context switch events 在ETW中,并通过 ProcessTrace . OldThreadId和OldThreadState将说明线程停止运行的原因(转换为就绪、备用、等待等)。NewThreadId将在线程开始运行时告诉您。您将必须为处理事件 每一个 系统中的上下文切换。这将是难以置信的高容量,在您的进程中消耗大量CPU,并且很难精确地得到正确的结果。 |
|
|
Mike Bruno · 访问模拟帐户的私钥 8 年前 |
|
John · 通过P/Invoke使用回调和堆对象的安全方法 9 年前 |
|
|
Residuum · 带有P/Invoke和指针的泛型 10 年前 |
|
|
hl3mukkel · 约束与使用SafeHandle的抽象类 10 年前 |