gpt4 book ai didi

android - Android 上的 pthread_sigmask 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:37 25 4
gpt4 key购买 nike

pthread_sigmask 似乎不适用于 Android。该问题似乎已在 2 年前报告过 here但一直没有得到开发商的回应。我遇到了一个非常相似的问题(我的代码在下面供引用)。我做错了什么,还是 Android NDK 有问题?关于如何使用两个线程来处理仅限于一个线程的特定信号的任何提示/帮助?

我在 Android 2.2 上运行这段代码。

// block the signal in this thread
sigset_t signals;
sigemptyset(&signals);
sigaddset(&signals, SIGALRM);
int ret = pthread_sigmask(SIG_BLOCK, &signals, NULL);
if (ret) {
LOG("pthread_sigmask failed. %d", ret);
}

我收到错误 22 (EINVAL)。对于 SIG_UNBLOCK,我也遇到了同样的错误。

更新:看起来它适用于 4.1 设备。我试过 4.1,它似乎成功了。它在 2.3 和 4.0 设备上也失败了。

关于如何确保特定信号的信号处理程序仅在一个线程上运行的任何提示?在此先感谢您的帮助。

最佳答案

看起来这里的实现是固定的:

https://android.googlesource.com/platform/bionic/+/9bf330b5676d0f60b3e4c3b8985494bcb1134e8b

您可以改用 sigprocmask(),尽管该行为并未针对多线程进程正式定义。

关于android - Android 上的 pthread_sigmask 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com