조사 중에 NDK의 Semaphore 프리미티브 구현에 몇 가지 차이가 있음을 발견했습니다. 현재 작업에 sem_timedwait (예 : sem_wait과 마찬가지로 timeout)이 필요하지만 NDK에서는 찾을 수 없습니다. 한 가지 더 중요한 점은 코드가 iOS 플랫폼에서 이식 가능해야한다는 것입니다. Android와 함께 sem_timedwait NDK
내 현재 제안 :
1 단계 :
2 단계 sem_wait와 별도의 스레드를 생성 (thrd_id1) (영원히 거기에 붙어 있습니다, sem_post 때까지 기다립니다) : 만들기 별도의 스레드 (thrd_id2)와 잠에서 잠시 후 우리가 깨울 때
3 단계 : 우리가 계기가되면은 (thrd_id2는) 그렇지 않으면 sem_wait 다른 스레드에서 sem_post 잠금을 해제, 성공 반환 ETIMEOUT의 경우, sem_wait (thrd_id1)와 스레드를 취소하려고합니다. 그러나 pthread의 NDK 구현에는 취소 가능 스레드가 없습니다.
pthread_kill으로 다른 아이디어가 있습니까?하지만 정상적으로 종료되었거나 종료되었다는 것을 어떻게 알 수 있습니까?
알려 주시기 바랍니다.
어쨌든 나는 안드로이드 NDK가 ['sem_wait']을 가지고 있다면 (''sem_timedwait'') (http://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_timedwait.html) //pubs.opengroup.org/onlinepubs/9699919799/functions/sem_wait.html) (또는 ['sem_trywait'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_trywait.html)). 안드로이드가 생각하기 오래 전부터이 모든 기능은 수년 동안 POSIX (및 Linux)에있었습니다. [manual page] (http://man7.org/linux/man-pages/man3/sem_timedwait.3.html)에 명시된대로'-pthread' 플래그로 링크합니까? –
리눅스는 당신이 제안한 것처럼 수년간이 모든 기능을 갖추고 있습니다. 그러나 최신 NDK에는 sem_timedwait 만 있습니다. 그러나 프로젝트의 사양에는 이전 버전의 NDK가 필요합니다. 미리 감사드립니다. –