我有一个使用 C++/CX 编写的 WinRT 组件的 WinJS 应用程序。组件生成一个后台线程,该线程使用一个庞大的遗留线程不安全 C++ 库来封装工作,这要求所有调用都来自同一个线程。
我需要实现一个生产者/消费者模式,其中组件中的后台线程是生产者,而 JavaScript 应用程序中的 UI 线程是消费者。
调用部分很简单,因为 JavaScript 可以调用组件方法(在 UI 线程中),而 C++ 代码会将作业发布到后台线程的队列中。
问题是回调:我需要将 C++ 后台线程计算的数据发布到 UI 线程中。我当然可以将 IAsyncOperation 返回给 JavaScript,但我不希望 UI 线程在此操作等待来自后台线程的事件时被阻塞。
我有哪些选择?