sem_timedwait with Android NDK

sem_timedwait with Android NDK

本文关键字:Android NDK with timedwait sem      更新时间:2023-10-16

在调查过程中,我发现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实现。