簡體   English   中英

sem_timedwait與Android NDK

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM