繁体   English   中英

如何修复 Android 中的 pthread_mutex_trylock 错误

[英]How can I fix pthread_mutex_trylock error in Android

我在模拟的 Android 设备上遇到了问题。 老实说,在每个模拟的 Android 设备上。 Android Bionic 有一个互斥锁测试。 它可以在以下位置找到:

https://android.googlesource.com/platform/system/extras/+/froyo/tests/bionic/libc/bionic/test_mutex.c

因此,当使用 CMake 和适用于 Android x86 或 x86_64 的 Android 工具链编译它时,它编译得很好。 不过,在运行文件时,它会在第 90 行中引发错误:

    expect( pthread_mutex_trylock( &lock ), EDEADLK );

错误信息:

generic_x86_arm:/data/local # ./test_mutex
/home/tjk/coding/oorexx/mutex/test_mutex.c:80: call returned 16 instead of 35: pthread_mutex_trylock( &lock )

如果我在线删除它,一切都很好,我会得到一个“好的”。 这不是一个解决方案,因为我正在处理一个大项目,调试告诉我存在问题,并且很可能是 trylock 函数造成的。 所以我需要解决这个问题。 互斥测试必须起作用。

我能做什么? 那可能是什么原因? 是设备吗? 是 Android 工具链还是我的 CMake 命令有问题? 我的 CMake 命令:

cmake -H./ -B./build2 -DANDROID_NDK=~/coding/android-ndk-r22b/ -DCMAKE_TOOLCHAIN_FILE=~/coding/android-ndk-r22b/build/cmake/android.toolchain.cmake -DANDROID_ABI="x86" -DCMAKE_BUILD_TYPE=Release \                            (base) 
                                                                        -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DANDROID_NATIVE_API_LEVEL=30

CMakeLists.txt:

cmake_minimum_required(VERSION 3.6.0)
project(test_mutex)
add_executable(test_mutex test_mutex.c)

我真的很感激任何有用的提示。 谢谢!

最好的问候托马斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM