.NET中在单独(单个)线程上管理任务队列的最佳方法

.NET中在单独(单个)线程上管理任务队列的最佳方法,第1张

.NET中在单独(单个)线程上管理任务队列的最佳方法

要创建异步单并行程度的工作队列,您可以简单地创建一个

SemaphoreSlim
,将其初始化为1,然后
await
在开始请求的工作之前使用获取该信号量的入队方法。

public class TaskQueue{    private SemaphoreSlim semaphore;    public TaskQueue()    {        semaphore = new SemaphoreSlim(1);    }    public async Task<T> Enqueue<T>(Func<Task<T>> taskGenerator)    {        await semaphore.WaitAsync();        try        { return await taskGenerator();        }        finally        { semaphore.Release();        }    }    public async Task Enqueue(Func<Task> taskGenerator)    {        await semaphore.WaitAsync();        try        { await taskGenerator();        }        finally        { semaphore.Release();        }    }}

当然,除了具有固定的并行度之外,只需将信号量初始化为其他数字即可。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5567169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存