gpt4 book ai didi

c++ - Android NDK pthread 上下文切换

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:23:52 25 4
gpt4 key购买 nike

上下文切换 pthreads 的正确方法是什么,根据我的理解,pthread_yield()sched_yield() 在使用 NDK 时分别不可用/无效。

编辑:这真的是 sched_yield() 所做的一切吗? ftp://sourceware.org/pub/pthreads-win32/sources/pthreads-w32-2-9-1-release/sched_yield.c

EDIT2:(回应前两条评论)克里斯:找到了这个来源。它在 ASM 中,不确定它的作用。 http://code.google.com/p/android-source-browsing/source/browse/libc/arch-arm/syscalls/sched_yield.S?repo=platform--bionic&r=7582a9c119a4e4d0c306996b2513205889a9fb6c

ENTRY(sched_yield)
mov ip, r7
ldr r7, =__NR_sched_yield
swi #0
mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
END(sched_yield)

(EDIT2A:刚刚还发现了这个:https://android.googlesource.com/platform/external/pthreads/+/master/sched_yield.c也使用 Sleep (0);。)

我是 android/linux 的新手。我是否会使用 android 库进行编译以在非 android linux 上获得相同的结果?就像“strace”的建议一样,还没想好。

法登:我正在将多线程 C++ 应用程序移植到 android/ndk。它使用需要共享 cpu 时间的多个线程,因为它们可以相互阻塞,因此死锁是一种非常现实的可能性,需要加以防止(层次结构,不是问题,api/系统调用做他们应该做的事情) .使用“ sleep ”作为解决方法似乎会给我带来不可预测的行为,并且会占用 CPU 周期。

最佳答案

sched_yield() 可用于 Android NDK(在所有支持的平台上)。只需在使用前包含 ,就像普通的 Posix 系统一样。

关于c++ - Android NDK pthread 上下文切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185329/

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