我有个问题,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/