할 수 없습니다. 프로세스 컨텍스트를 손상시키지 않고 협력없이 스레드를 취소 할 수 없습니다.
스레드는 그런 종류의 격리를 제공하지 않습니다. 그들은 단지하지 않습니다. 스레드가 실패하면 프로세스가 실패합니다. 신뢰할 수 없거나 신뢰할 수없는 코드를 자체 프로세스 또는 가상 시스템 등에 포함해야합니다. 스레드는 완전히 투과성이 있습니다. 스레드가 수행하는 가장 일반적인 것들의
하나는 이것이다 :
획득 잠금.
(잠금으로 보호되는) 일부 불변 조건을 깨십시오.
이러한 불변 값을 복원하십시오.
잠금을 해제하십시오.
이제 '스레드가 2 단계를 완료되었지만 (즉, 깨진 불변가 발생하는 잠금을 획득하기 위해 다음 스레드를 야기하기 때문에) 당신은 잠금을 해제 할 수없는 3 단계하지 않은 경우 상상을 수행 할 수 있습니다 잠금을 유지 한 상태로 두십시오 (이는 다음 스레드가 잠금을 획득하여 영원히 기다리게하기 때문입니다). 그래서 프로세스 컨텍스트는 그 시점에서 파괴 될 것입니다.
불변량을 복원하려면 스레드의 협조가 필요합니다.
스레드 자체가 알람을 발생 시켜서 죽이는 것이 좋습니까? 아니면 외부 스레드/프로세스가 그것을해야합니까? – wallyk
이 세분화 오류가 발생한 위치와 같은 샘플 코드가 있습니까? – localhost
누구나 할 수 있습니다. 나는 지금 경보를 울리려고 노력하고있다. 알람이 트리거되고 있지만 pthread_exit (NULL)을 호출하면 알 수 있습니다. 아무것도 일어나지 않고있다. –