c# - AsyncWaitHandle.WaitOne 会阻塞 CLR 线程吗?或者它是否创建一个 I/O 完成端口?

标签 c# multithreading asynchronous iasyncresult

我有个问题,AsyncWaitHandle.WaitOne 会阻塞 CLR 线程吗?还是创建 I/O 完成端口?

例如,当我运行我的应用程序时,我启动了一个初始化一些数据的任务“A”,当新请求到达时,我希望它们等到“A”完成,这样我就可以执行 IAsyncResult。 AsyncWaitHandle.WaitOne,但是...它会阻塞调用线程直到“A”结束,还是会创建一个 I/O 完成端口,当“A”结束时也会收到通知。

如果没有,有什么办法吗?

问候。

最佳答案

是的,它会阻塞线程,但与任何其他 WaitHandle 一样,它会阻塞在操作系统内核中,因此不会占用任何 CPU 时间。

如果你不想阻塞你的线程,但确实想要一个“回调”,你可以使用线程池:

ThreadPool.RegisterWaitForSingleObject( waitHandle, callback, ...

关于c# - AsyncWaitHandle.WaitOne 会阻塞 CLR 线程吗?或者它是否创建一个 I/O 完成端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474899/

相关文章:

c# - 在 Silverlight 4 中水平显示项目列表

c# - ASP.NET Web API 中带有可选参数的属性路由

c++ - 在线程之间共享一个文件描述符

java - Android的decodeByteArray在自己的线程上非常慢,但在UI线程上却不是

c# - 在 C# 中格式化主图表的轴

c# - 如何在 C# 中管理内存泄漏

c# - Task.Run 不像 Thread.start 那样工作

python - Python 中是否有类似于 Ruby 的 Rufus-Scheduler 的内存作业调度程序

java - 将请求范围数据传递给 CDI 中的异步方法

ios - 为什么异步加载图像需要很长时间?