我一直在努力理解Blocking Collection,我发现了
我了解到,如果没有要取的项,
根据Josheph Albahari关于并行编程的文章,
Take()
和TryTake()
,还有Add()
和TryAdd()
。我了解到,如果没有要取的项,
Take()
将等待直到添加项,类似地,如果集合达到其最大限制,Add()
将等待直到项被移除。根据Josheph Albahari关于并行编程的文章,
所以,"如果集合大小有限,则Add和TryAdd可能会阻塞; 当集合为空时,Take和TryTake会阻塞。"
Take()
和TryTake()
都会等待添加一个项目。那么,如果我们没有提供任何超时或取消标记,Take()
和TryTake()
之间有什么区别?TryTake()
不应该立即返回false
而不是等待吗?TryAdd()
也是同样的情况吗?