[英]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 )取消线程,如果成功返回ETIMEOUT ,否则sem_wait由另一个线程的sem_post解锁。 但是NDK的pthread实现没有可取消的线程。
对pthread_kill有另一个想法,但是我怎么知道它被杀死或正常终止了?
请指教。
sem_timedwait
至少存在于r9d
版本的Android NDK中(我没有更早的版本)-检查platforms/android-%yourplatform%/arch-%yourarch%/usr/include/semaphore.h
。
如果不能切换到较新的NDK,我建议您仅采用GNU实现 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.