BufferBlockT
(FIFO 佇列:進來的資料是輸出的資料)
簡而言之,BufferBlock 提供了一個無限制或有界緩衝區來儲存 T 的例項。
你可以將 T 的例項釋出到塊中,這會導致釋出的資料以先進先出(FIFO)順序儲存在街區。
你可以從塊中接收,這允許你同步或非同步地獲取以前儲存或將來可用的 T 的例項(同樣,FIFO)。
具有限制生產者的非同步生產者/消費者
// Hand-off through a bounded BufferBlock<T>
private static BufferBlock<int> _Buffer = new BufferBlock<int>(
new DataflowBlockOptions { BoundedCapacity = 10 });
// Producer
private static async void Producer()
{
while(true)
{
await _Buffer.SendAsync(Produce());
}
}
// Consumer
private static async Task Consumer()
{
while(true)
{
Process(await _Buffer.ReceiveAsync());
}
}
// Start the Producer and Consumer
private static async Task Run()
{
await Task.WhenAll(Producer(), Consumer());
}