[英]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.