因此,众所周知,像asp.NET,WPF和WinRT这样的框架为您管理一个或多个线程。在asp.net中,框架汇集了一组线程,它们接收来自队列的请求并处理它们。在WPF中,框架为您管理UI线程,该线程从消息泵获取消息。重用等待线程
这可以通过简单的生产者/消费者方法来实现,其中消费线程执行while(true)
循环,从队列中获取消息并使用消息处理程序(用户的代码)执行它们。够简单。您可以在这里找到一个基本的实现:https://stackoverflow.com/a/5828863/857807
通过引入异步电动机/等待语义,你可以委托CPU/IO密集型工作,其他线程,并离开(例如)UI线程响应。这意味着UI线程将继续从泵中获取消息。
我的问题是:从上述基本实现开始,消费者如何实现这一点?您如何知道消息处理程序正在异步等待另一个线程完成,并因此从队列中取出另一条消息?我相信我在这里错过了一些大事。
你问的WPF/etc UI线程是如何做到这一点的,或者你将如何在特定的线程上自己做? –
我确信框架的实际实现对我来说有点矫枉过正,我只想知道它的要点。我没有试图自己实现它,但我想知道如果我想要,我会怎么做,出于好奇。 – dcastro