编程语言
首页 > 编程语言> > C#-AsyncWaitHandle.WaitOne会阻止CLR线程吗?还是创建一个I / O完成端口?

C#-AsyncWaitHandle.WaitOne会阻止CLR线程吗?还是创建一个I / O完成端口?

作者:互联网

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

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

如果没有,有办法吗?

问候.

解决方法:

是的,它阻塞了线程,但是像其他任何WaitHandle一样,它阻塞了OS内核,因此不占用任何CPU时间.

如果您不想阻塞线程,但想要“回调”,则可以使用线程池:

ThreadPool.RegisterWaitForSingleObject( waitHandle, callback, ...

标签:multithreading,asynchronous,iasyncresult,c
来源: https://codeday.me/bug/20191101/1987291.html