pthread_join()
과 비슷한 일을 할 수있는 pthread API 호출이 있습니까? Windows WaitForSingleObject (HANDLE 핸들, int timeout) 함수와 비슷한 함수를 찾고 있습니다. 나는 pthread_timedjoin()
콜이 있지만 특정 버전의 리눅스에서만 사용 가능하다는 것을 안다.안드로이드/리눅스 쓰레드가 타임 아웃을 가지고 합류합니다
2
A
답변
2
아니요, 시간 제한 pthread_join()에 대한 표준 API가없고 Android에서 사용되는 바이오닉 C 라이브러리에서 사용할 수있는 API는 없습니다. 바이오닉 소스 코드를 살펴 보더라도 glibc에서 사용할 수있는 pthread_timedjoin_np() API를 구현하는 것은 매우 쉽습니다.
당신이 할 수있는 일은 pthread_cond_t가 끝나고 종료 될 때 신호를 보내도록 스레드를 수정하는 것입니다. 해당 스레드에서 대기하려는 다른 스레드는 조건 변수에서 pthread_cond_timedwait()를 수행합니다.
필자가 웹에이 개 솔루션을 볼 수 : http://pubs.opengroup.org/onlinepubs/000095399/xrat/xsh_chap02.html#tag_03_02_08_21 및 http://therealdavebarry.blogspot.com/2006/03/waiting -for-thread-pthreadjoin-with.html 첫 번째는 특별한 유형의 시간 초과 스레드를 만드는 것 같습니다. 두 번째 .. 정말 잘 모르겠다. –
두 번째 해결 방법으로 끝났습니다. 문제는 단지 pthread_cancel()을 대체해야 할 것입니다 ... –
조건 변수 솔루션을'pthread_cleanup_push()'와'pthread_cleanup_pop()'[POSIX 매뉴얼 페이지 참조]와 결합 할 수 있습니다 (http : //pubs.opengroup.org/onlinepubs/007908799/xsh/pthread_cleanup_push.html); 그러면'pthread_cancel()'을 계속 사용할 수 있습니다. 이 답변은 오래된 답변이지만 여전히 "pthread_join timeout"에 대한 검색 결과에 나타납니다. – nitrogen