【问题标题】:Are asynchronous Windows Runtime calls guaranteed to expire?异步 Windows 运行时调用是否保证会过期?
【发布时间】:2019-10-05 19:03:32
【问题描述】:

Windows 运行时大量使用异步模式,将长时间运行的任务卸载到线程池。我已经阅读了Threading and async programming 中的所有文章,但找不到我的问题的答案:

是否所有 Windows 运行时异步调用都保证在某个时候返回?

【问题讨论】:

  • 任何同步调用都保证在某个时候返回!

标签: windows-runtime winrt-async c++-winrt


【解决方案1】:

正如@Paulo 在 cmets 中提到的,这完全取决于代码的编写方式。编写自己的永不返回的异步代码很容易,并且通过从 UI 线程执行 .Wait() 来使用平台 API 使应用程序死锁很简单。

从根本上说,异步操作是一个函数,它返回一个对象(通常称为“承诺”或“未来”),然后该对象要么设置一个事件,要么在未来某个时间点调用回调函数(这是异步操作的“逻辑”返回值)。

其中任何一部分都可能失败——初始函数可能永远无法返回 Promise 对象,或者 Promise 可能永远无法调用回调/设置事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2016-11-20
    相关资源
    最近更新 更多