다중 스레드 환경에서 SIGCANCEL이 스레드로 전송되면 어떻게됩니까?SIGCANCEL이 스레드로 전송되면 어떻게됩니까?
SIGKILL이 스레드로 보내지는 경우의 동작 차이는 무엇입니까?
다중 스레드 환경에서 SIGCANCEL이 스레드로 전송되면 어떻게됩니까?SIGCANCEL이 스레드로 전송되면 어떻게됩니까?
SIGKILL이 스레드로 보내지는 경우의 동작 차이는 무엇입니까?
트래비스가 말한 것처럼 SIGCANCEL
은 deprecated이며 POSIX 표준에는 없습니다.
glibc-2.9/nptl/pthread_cancel.c 파일에서 SIGCANCEL이 사용되었다는 것을 알 수있었습니다 .Hence에 대해 궁금 해서요. 그래서 pthread_cancel()을 호출하면 정확히 무엇이 발생합니까? – notytony
@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
glibc
pthread 구현에서 현재 (내부적으로) 사용되는 SIGCANCEL
은 __SIGRTMIN
으로 정의됩니다.
취소 유형이 비동기로 설정된 스레드에 대해 pthread_cancel()
이 호출되면 tgkill()
을 통해 __SIGRTMIN
을 보냄으로써 다운됩니다.
역순으로 이것은 __SIGRTMIN
을 수신하는 스레드가 비동기 적으로 취소 된 것처럼 동작합니다. (나는 이것을 테스트하지 않았다)
리눅스에서는'SIGCANCEL'이 전혀 지원되지 않는다고 생각합니다. 나는 그것이 POSIX에 의해 사용되지 않음을 알고있다. –