A
Size: a a a
A
S
AH
A
S
IC
IC
AH
AH
AH
AH
AH
IC
AH
IC
IC
IC
IC
static async Task Main(string[] args)
{
PerfTask();
var workItemsChannel = Channel.CreateBounded<WorkItem>(new BoundedChannelOptions(100) { SingleWriter = true });
_ = Task.Run(async () =>
{
foreach (var i in DateQuants().SelectMany(p => kustoClients, (l, r) => (l.Item1, l.Item2, r.Item1, r.Item2)))
{
await workItemsChannel.Writer.WriteAsync(new WorkItem(i.Item3, i.Item4, i.Item1, i.Item2));
}
});
var entriesChannel = Channel.CreateUnbounded<(string cluster, DateTime start, string[] logs)>(new UnboundedChannelOptions { SingleReader = true });
for (int i = 0; i < parallelism; i++)
{
_ = Task.Run(async () =>
{
await foreach (var workItem in workItemsChannel.Reader.ReadAllAsync())
{
var logs = await LogsBetween(workItem.Provider, workItem.Start, workItem.End);
await entriesChannel.Writer.WriteAsync((workItem.Cluster, workItem.Start, logs.Select(p => p.ToString()).ToArray()));
}
});
}
await foreach (var (cluster, start, logs) in entriesChannel.Reader.ReadAllAsync())
{
await afterTask(cluster, start, logs);
}
}
IC