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