1.目的
多个线程产生数据需要队列消费的情况
多线程生产,多线程消费,线程安全
避免延时等待
2.代码:
[Test]
public async Task testChannel2()
{
//异步写入
var myChannel = Channel.CreateUnbounded<int>();
_ = Task.Factory.StartNew(async () =>
{
for (int i = 0; i < 10; i++)
{
await myChannel.Writer.WriteAsync(i);
await Task.Delay(1000);
}
});
_ = Task.Factory.StartNew(async () =>
{
for (int i = 0; i < 10; i++)
{
await myChannel.Writer.WriteAsync(i);
await Task.Delay(5000);
}
});
_ = Task.Factory.StartNew(async () =>
{
//消费写入数据没有则等待
while (true)
{
var item = await myChannel.Reader.ReadAsync();
Console.WriteLine(item);
}
});
_ = Task.Factory.StartNew(async () =>
{
//消费写入数据没有则等待
while (true)
{
var item = await myChannel.Reader.ReadAsync();
Console.WriteLine(item);
}
});
await Task.Delay(60000);
}