我现在开始与 TPL 合作。我在这个视频中看到了一个使用 TPL 的简单版本的生产者/消费者模型。
这是问题所在:
以下代码:
BlockingCollection<Double> bc = new BlockingCollection<Double>(100);
IEnumerable<Double> d = bc.GetConsumingEnumerable();
返回IEnumerable<Double>
可以使用 foreach 迭代(并自动使用)的:
foreach (var item in d)
{
// do anything with item
// in the end of this foreach,
// will there be any items left in d or bc? Why?
}
我的问题是:
- 如果我得到
IEnumerator<Double> dEnum = d.GetEnumerator()
from (例如,用循环d
迭代)也会消耗列表吗?(我的回答:我不这么认为,因为 the 与没有联系,如果你明白我的意思的话。所以它会消耗,但不会,甚至不会)d
while
d.MoveNext()
dEnum
d
dEnum
d
bc
- 我可以以循环以外的方式循环
bc
(或) ,消耗物品吗?(循环比循环快得多,我担心科学计算问题的性能问题)d
foreach
while
foreach
- 在类型中究竟消耗
BlockingCollection<T>
是什么意思?
例如,代码:
IEnumerator<Double> dEnum = d.GetEnumerator();
while (dEnum.MoveNext())
{
// do the same with dEnum.Current as
// I would with item in the foreach above...
}
谢谢大家!