c# - 限制单次执行一个方法的线程数

标签 c# .net multithreading asynchronous locking

在这种情况下,我们希望限制我们的应用程序可以向其应用程序服务器发出的并行请求的数量。我们可能有 100 多个后台线程在运行,它们希望在某个时候调用应用程序服务器,但只希望 5 个线程能够在任何时候调用 SendMessage()(或任何方法)。实现这一目标的最佳方式是什么?

我考虑过使用某种看门人对象来阻止线程进入该方法,直到其中执行的线程数降至阈值以下。这是一个合理的解决方案,还是我忽略了这可能是肮脏/危险的事实?

我们正在使用 C#.NET 3.5 进行开发。

谢谢,

史蒂夫

最佳答案

使用信号量

http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx

Limits the number of threads that can access a resource or pool of resources concurrently.

关于c# - 限制单次执行一个方法的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552192/

相关文章:

c# - 将 BigIntegers 相除以返回 double

c# - 如何将非托管 C++ 窗体嵌入到 .NET 应用程序中?

c# - 通过线程以一定的时间间隔执行任务一定次数

c# - 需要有关我的界面代码的解释

c# - UWP 应用程序在 Visual Studio Debug模式下工作,但发布版本不会运行,缺少 DLL (C#)

c# - 通过 TCP 发送大字符串 - Windows Phone

c# - 在全局中找不到命名空间

c# - 具有多级继承的 base.Method() 未被调用?

java - 当不再有线程持有某个对象时,如何从 ConcurrentHashMap 中删除项目?

OpenGL 应用程序中的 Java 线程