gpt4 book ai didi

c# - 如何使异步回调在不同的线程池中处理?

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:46 24 4
gpt4 key购买 nike

当执行 begin... 异步调用时,我传递的委托(delegate)在默认线程池中处理(根据文档)。

例如:System.IO.Stream.BeginRead( byte[] 缓冲区,int 偏移量,int 计数, AsyncCallback 回调,对象状态);

我怎样才能使用专用的线程池来处理异步方法?

(我知道这是可以做到的,因为 CCR(并发协调运行时)也在这样做(根据他们的文档))

最佳答案

严格来说,它是在线程池的 IO 部分处理的(异步 IO 操作有自己的一组线程,与 ThreadPool.Queue* 方法使用的线程不同)。

目前(使用已发布/支持的工具)执行此操作的唯一方法是将 stub 方法传递给 BeginRead,将执行转发到您自己的线程池:

var async = stream.BeginRead(buffer, offset, count,
ayn => { MyThreadPool.Dispatch(() => {
// Handle completion
}}, null);

Reactive Framework Extensions (RX) 将使这更容易:为您的线程池创建一个 IScheduler 实现,但 RX 是一个 CTP,可能需要一段时间才能上线。

关于c# - 如何使异步回调在不同的线程池中处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com