Sync Async - ZjzMisaka/PowerThreadPool.zh-CN.Wiki GitHub Wiki
PowerThreadPool原生支持同步与异步任务, 实现了同步-异步任务无缝混排, 对同步与异步任务的生命周期和结果有一致的控制方式与结果获取.
PowerThreadPool 允许通过QueueWorkItem函数 实现多种方式的同步任务提交, 包括无参/有参的 Action, Func, 支持泛型参数和返回值.
powerPool.QueueWorkItem(() =>
{
Thread.Sleep(1000);
});
PowerThreadPool 原生支持 Task
或 Task<TResult>
类型的异步任务, 可通过 QueueWorkItemAsync函数 提交异步任务
powerPool.QueueWorkItemAsync(async () =>
{
await Task.Delay(1000);
});
PowerThreadPool 能够将异步任务像同步任务一样纳入线程池的统一管理体系, 包括调度, 等待, 分组, 结果收集, 取消, 暂停, 恢复与异常处理等等. 这极大地简化了 .NET 多线程和异步场景下的复杂性, 让开发者无需关注异步细节, 专注于业务逻辑.
异步任务的全部功能与同步任务完全一致. PowerThreadPool 对异步任务的一致管理不会牺牲异步的本质特性, 但它会让异步任务的调度和生命周期受到线程池的统一管理, 实现了 "统一入口, 统一控制" . 不过, 这种统一管理下, 异步任务的 "线程无关性" 依然保留, 不会变成同步阻塞执行, 也不会强行把异步任务塞进线程池线程执行主逻辑.
可以在 PowerThreadPool 中同时混合同步与异步任务, 统一管理. 例如:
powerPool.QueueWorkItem(() => {/*同步任务*/});
powerPool.QueueWorkItemAsync(async () => {/*异步任务*/});
所有任务都可以通过一致的接口进行暂停, 恢复, 取消, 分组, 结果收集等操作.