std ::异步问题取决于Android版本

我目前正在开发一个本机应用程序,它可以从API 14运行在Android设备上。我在代码中使用std :: async,迄今为止它没有给API 19设备带来任何问题,但API 14和15人的表现方式不同:

  • 当我使用std :: launch :: async时,该函数没有执行。 对返回的std :: future的wait()调用将被永久阻止。
  • 当我没有制定政策时,它就起作用了。 (我认为,它使用延期)。
  • 例:

    std::async(std::launch::async, &foo) <-- never running foo
    std::async(&foo) <-- runs foo
    

    如果我在同一台设备上刷新API 16映像,则异步按预期工作。

    我正在使用CLang3.4和最新的工具链。

    我也在使用gnustl_static。

    我读过类似的问题,比如:NDK r9c - 不支持std :: future,用户报告LG电话在第一次结束之前不会启动第二项任务。

    两个问题:

  • 为什么不同的行为取决于Android版本?
  • 如果我链接相同的gnustd_static库,为什么std :: async的行为不同?
  • 链接地址: http://www.djcxy.com/p/30745.html

    上一篇: std::async problems depending on Android version

    下一篇: Storing a future in a list