【问题标题】:Why is .NET ThreadPool lagging?为什么.NET ThreadPool 滞后?
【发布时间】:2013-04-18 20:00:07
【问题描述】:

所以我正在与一个需要我为我订阅的每个事件调用 keep-alive 方法的 Web 服务交谈。在任何给定时间最多可以有 400 个事件。

目前我正在使用没有间隔的 System.Timers.Timer。 问题是这似乎耗尽了我的 ThreadPool,因为如果我尝试使用 ThreadPool.QueueWorkersItem() 运行某些东西,它在排队后可能需要长达 20 秒才能运行。

知道如何在不占用线程池的情况下运行我的 keep-alive 调用吗?

BR托马斯

【问题讨论】:

  • 您是否每次都在新线程上执行“保持活动”方法?为什么不专门为它设计一个?

标签: .net multithreading threadpool


【解决方案1】:

这取决于您有多少这些事件、您需要多久调用一次 keep alive 方法以及进行该调用需要多长时间。 ThreadPool.QueueUserWorkItemqueue 要执行的方法。如果所有线程池线程都被占用,您的工作项将不得不等待线程被释放。对于在它之前排队的所有其他项目。

您可能应该按照评论者的建议进行操作,并拥有一个专用线程来持续进行更新,可能是通过异步调用。

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多