sem_timedwait with Android NDK
sem_timedwait with Android NDK
在调查过程中,我发现NDK中的信号基元实现存在一些差距。我当前的任务需要sem_timedwait(就像有超时的sem_wait),但我在NDK中找不到它。还有一件更重要的事情:代码应该在iOS平台上是可移植的。
我目前的建议:
步骤1:使用sem_wait创建单独的线程(thrd_id1)(等待sem_post,可以永远停留在那里)
步骤2:创建单独的线程(thrd_id2),睡眠时间为秒,当我们唤醒时
第3步:当我们被唤醒时(thrd_id2),尝试用sem_wait(thrd_id1。然而,pthread的NDK实现没有可取消的线程。
对pthread_kill有另一个想法,但我怎么能知道它是被正常杀死还是终止的?
请告知。
sem_timedwait
至少在版本r9d
(我没有早期版本)的Android NDK中存在-请检查platforms/android-%yourplatform%/arch-%yourarch%/usr/include/semaphore.h
。
如果切换到更新的NDK不是一种选择,我建议您只采用GNU实现。
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 不再支持Android NDK APP_STL gnustl_shared
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 从文件问题加载纹理 Android NDK 和 OpenGL
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 如何在Android(NDK)中使用CPR库
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 如何在 C/Android NDK 中将字符串日期转换为毫秒