2011-04-25 6 views
1

다중 스레드 환경에서 SIGCANCEL이 스레드로 전송되면 어떻게됩니까?SIGCANCEL이 스레드로 전송되면 어떻게됩니까?

SIGKILL이 스레드로 보내지는 경우의 동작 차이는 무엇입니까?

+0

리눅스에서는'SIGCANCEL'이 전혀 지원되지 않는다고 생각합니다. 나는 그것이 POSIX에 의해 사용되지 않음을 알고있다. –

답변

0

트래비스가 말한 것처럼 SIGCANCELdeprecated이며 POSIX 표준에는 없습니다.

+0

glibc-2.9/nptl/pthread_cancel.c 파일에서 SIGCANCEL이 사용되었다는 것을 알 수있었습니다 .Hence에 대해 궁금 해서요. 그래서 pthread_cancel()을 호출하면 정확히 무엇이 발생합니까? – notytony

+0

@notytony 네, 여전히 glibc 2.9에 존재하는 것으로 보입니다. 그러나 커널 맨 페이지를 보면 [그것은 없습니다] (http://www.kernel.org/doc/man-pages/online/pages/) man7/signal.7.html). 나는 pthread에 대한 경험이 없지만 표준 신호가 아닌 것 같습니다. 읽은 문서 중 일부는 호출자와 동일한 프로세스에있는 스레드에 신호를 보내는 데 사용됨을 나타냅니다. pthread_cancel과 [pthread_kill] (http://glibc.sourcearchive.com/documentation/2.9-9ubuntu2/pthread__kill_8c-source.html)을 비교할 수 있습니다. – voithos

0

glibc pthread 구현에서 현재 (내부적으로) 사용되는 SIGCANCEL__SIGRTMIN으로 정의됩니다.

취소 유형이 비동기로 설정된 스레드에 대해 pthread_cancel()이 호출되면 tgkill()을 통해 __SIGRTMIN을 보냄으로써 다운됩니다.

역순으로 이것은 __SIGRTMIN을 수신하는 스레드가 비동기 적으로 취소 된 것처럼 동작합니다. (나는 이것을 테스트하지 않았다)

관련 문제