using System;
using System.Threading.Channels;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
//==============================================节流队列==============================================
//场景生产者比消费者运行得快,会造成不必要的内存使用,如希望保留所有的对象项,则建议使用节流队列
Channel<int> queue = Channel.CreateBounded<int>(1);
ChannelWriter<int> writer = queue.Writer;
ChannelReader<int> reader = queue.Reader;
await writer.WriteAsync(2);
int result = 0;
reader.TryRead(out result);
Console.WriteLine($"reader {result}");
//队列容量为1,则当里面有一个对象项的时候,需等待消费掉,下面的才能进队列
await writer.WriteAsync(13);
reader.TryRead(out result);
Console.WriteLine($"reader {result}");
writer.Complete();
//==============================