当前位置: 首页 > 编程语言 > C#

限制一次执行一个方法的线程数分享

时间:2023-04-10 14:22:27 C#

限制一次执行一个方法的线程数我们想限制一个应用程序可以向其应用服务器发出的并行请求数。我们有可能在某个时候运行100多个想要调用应用程序服务器的后台线程,但只希望5个线程能够随时调用SendMessage()(或其他)。实现这一目标的最佳方法是什么?我考虑过使用某种看门人对象来阻止线程进入该方法,直到其中执行的线程数降至阈值以下。这是一个合理的解决方案还是我忽略了这可能是肮脏/危险的事实?我们正在使用C#.NET3.5进行开发。谢谢,Steve使用信号量http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx来限制可以同时访问资源或资源池的线程数。你想要一个信号量...System.Threading.SemaphorepublicstaticclassMyClass{privatestaticSemaphoresem=newSemaphore(5,5);publicstaticvoidSendMessage(){sem.WaitOne();最后尝试{}{sem.Release(1);或者,如果您只希望单个线程能够在给定时间调用方法,.NET还公开了等效于java的同步属性:[System.Runtime.CompilerServices.MethodImpl(MethodImpl.Synchronized)]的信号量类就是为这种情况设计的。设计模式方法:-使用带有五个执行程序线程的命令模式,并将您的请求包装在命令类中。以上就是C#学习教程的全部内容:限制一次执行方法的线程数。侵权请点击右侧联系管理员删除。如需转载请注明出处: