我正在编写一个可以创建一系列请求消息的c#应用程序。每条消息都有一个响应,需要消费者等待。
如果未完成的请求消息的数量受到限制,我已使用Windows EVENT来解决此问题。但是,我知道在一个进程中可以创建多少个EVENT对象是有限制的,在这种情况下,我可能会超出该限制。
有没有人知道创建互斥对象或信号量是否有类似的限制?
我知道这可以通过某种共享资源池来解决,这些资源池在需要等待的时候会被消费者抓住,但如果每条请求消息都有自己的同步对象会更方便。
答案 0 :(得分:1)
系统限制进程可以创建的句柄总数。事件,互斥体,信号量等都会影响句柄数量,因此它们都会受到系统的限制。
这个限制是16 * 1024 * 1024,但我已经离开这个东西一段时间所以我不知道它已经改变了更新的操作系统和64位,但说实话我怀疑它,因为这是一个巨大的要创建的句柄数量,如果你接近它,可能会构成一个严重的设计缺陷。
对于你想要的东西没有非常清晰的画面,我可能错了,但也许你可以看看asyc事件模式之类的东西? http://msdn.microsoft.com/en-us/library/wewwczdw.aspx