std :: async问题取决于Android版本

时间:2014-09-01 14:07:04

标签: android c++ c++11 asynchronous android-ndk

我目前正在开发一个可以在API 14的Android设备上运行的本机应用程序。我在我的代码中使用了std :: async,到目前为止它没有给API 16到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 - does not support std::future用户报告LG手机在第一次结束之前不会启动第二项任务。

两个问题:

  • 为什么不同的行为取决于Android版本?
  • 如果我链接同一个gnustd_static库,为什么std :: async行为不同?

0 个答案:

没有答案