pthread_cancel 예제

Compartir

2/08/2019

Por

Categoría: Sin categoría

Comentarios: 0

스레드가 취소될 수 있는 영역(예: 취소 지점 이전)을 중심으로 리소스(예: 뮤텍스)를 획득함에 따라 이러한 리소스를 획득하는 것과 함께 취소 정리 처리기를 푸시해야 합니다. 정리 처리기는 이러한 리소스를 해제하고 스레드를 취소해야 하는 경우에만 호출됩니다. 스레드가 리소스를 해제하기 전에 마지막 취소 지점을 떠날 때 이 리소스에 대해 이전에 밀어넣은 정리 처리기를 팝업해야 합니다. pthread_cancel() 함수는 스레드 스레드에 취소 요청을 보냅니다. 대상 스레드가 취소 요청에 반응하는지 여부와 여부는 해당 스레드의 제어하에 있는 두 가지 특성인 취소 가능성 상태 및 형식에 따라 달라집니다. 잘 작성하고 잘 설명했다. (약간의 오타 수정이 필요함) 좋은 예도 있으므로 대상 스레드의 취소 처리는 pthread_cancel()에서 반환되는 호출 스레드와 관련하여 비동기적으로 실행됩니다. threa_cancel()는 스레드 ID로 하나의 특정 스레드를 취소하는 데 사용됩니다. 이 함수는 종료를 위해 스레드에 하나의 취소 요청을 보냅니다.

pthread_cancel()의 구문은 아래와 같습니다 – 이 시리즈의 파트 II에서 설명한 것과 동일한 예를 들면 : 두 가지 대체 함수가 스레드에 취소 알림을 보내는 것으로 간주되었습니다. 하나는 전달 될 때 취소 의미 체계를 가진 새로운 SIGCANCEL 신호를 정의하는 것입니다. 다른 하나는 취소 의미 체계를 트리거하는 새 pthread_cancel() 함수를 정의하는 것이었습니다. pthread_cancel() 함수는 스레드취소를 요청해야 합니다. 대상 스레드의 취소 가능성 상태 및 형식은 취소가 적용되는 시기를 결정합니다. 취소가 처리되면 스레드에 대한 취소 정리 처리기가 호출됩니다. 마지막 취소 정리 처리기가 반환되면 스레드 별 데이터 소멸자 함수가 스레드에 대해 호출됩니다. 마지막 소멸자 함수가 반환되면 스레드가 종료됩니다. pthread_cancel() 함수는 스레드가 취소되도록 요청합니다.

지정된 스레드에 대해 취소가 활성화되었다고 가정하면(pthread_setcancelstate()참조) 취소가 즉시 발생하거나(스레드에 PTHREAD_CANCEL_ASYNCHRONOUS 형식이 설정된 경우) 또는 스레드가 취소 지점에 도달할 때(스레드가 있는 경우) PTHREAD_CANCEL_DEFERRED 유형 집합) 기본 취소 유형은 PTHREAD_CANCEL_DEFERRED입니다(pthread_setcanceltype()참조). 스레드에 대한 취소 정리 처리기가 취소가 작동될 때 호출됩니다. 스레드는 마지막 소멸자 함수가 반환될 때 종료됩니다. 취소된 스레드에서 pthread_join()에 의해 반환된 스레드 종료 상태는 PTHREAD_CANCELED입니다. 스레드가 취소되면 스레드별 데이터 소멸자 함수(pthread_key_create()참조)는 호출되지 않습니다. 스레드 종료에 대 한 예제에서 main() 위의 설명된 함수를 사용 하는 예제를 사용할 수 있습니다: pthread_cancel() = 이 함수는 스레드 ID를 사용 하 여 특정 스레드를 취소 합니다. 이 함수는 스레드에 취소 요청을 보냅니다. 태그가 지정된: pthread_cancel 예제, pthread_create 예제, pthread_exit 예제, pthread_join 예제 취소 지점은 pthread_testcancel() 함수를 사용하여 사용자 코드에서 생성될 수 있습니다. 이제이 함수를 사용하여 스레드를 취소하는 방법을 살펴보겠습니다. pthread_setcanceltype(3)에 의해 결정된 스레드의 취소 유형은 비동기또는 지연될 수 있습니다(새 스레드의 기본값). 비동기 취소 가능성은 언제든지 스레드를 취소할 수 있음을 의미합니다(일반적으로 즉시 하지만 시스템에서 이를 보장하지는 않습니다). 지연된 취소 가능성은 스레드가 다음에 취소 지점인 함수를 호출할 때까지 취소가 지연됨을 의미합니다.

취소 포인트이거나 취소 포인트일 수 있는 함수 목록은 pthreads(7)에 제공됩니다. 좋은 기사 시리즈, 정말 내가 간결한 방법으로 스레딩을 이해하는 데 도움이. 취소 처리기는 pthread_cleanup_push() 및 pthread_cleanup_pop() 함수를 통해 설치 및 제거됩니다.