API 如此设计有什么原因吗?据我所知,“尝试”和“非尝试”方法之间的区别只是获得或InvalidOperationException
不获得 - 我不明白它与线程安全有什么关系。Queue
这里有一个小问题 - 为什么和不ConcurrentQueue
实现像 那样的通用接口,它将提供统一的方法,无论是否IQueue
使用?Try...
在同步上下文中,您可以Count
在出队之前检查属性。因此,如果您同步运行代码,这足以防止异常(就像数组一样,您可能会IndexOutOfRangeexception
由于简单的编程错误而导致异常 - 不检查可用性)。
在多线程代码中,这是不可能的 - 两个线程可以检查,即Count
1 并且都可以输入一段代码,其中最后一个元素出队,除非您使用Semaphore
or lock
(或其他同步方法),否则您不确定出队是否会成功。或不。因此TryDequeue
。
归档时间: |
|
查看次数: |
1168 次 |
最近记录: |