2012-09-07 2 views
0

내 응용 프로그램에서는 스레드가 boost :: thread :: interrupt로 인터럽트 될 수 있습니다. 인터럽트 된 쓰레드를 재사용하고 싶습니다. boost :: interrupted_exception을 catch 할 수 있습니까? 아니면 이데올로기가 잘못 되었습니까?boost :: interrupted_exception을 잡는 것이 옳은가요?

+1

중단 메커니즘은 순수한 도움이됩니다. 어떤 중단이 실제로 당신에게 의미하는 것은 당신이 결정하는 것입니다. – GManNickG

답변

2

나는

그것은 looks like 당신이 (강조 추가) 할 수 있습니다 중단 스레드를 다시 사용하려는 : 그것은 적발 할 수 있도록

부스트 :: thread_interrupted, 그냥 보통의 예외, 다른 예외와 마찬가지입니다. 이것이 예외가 throw 될 때 플래그가 지워지는 이유입니다. 스레드가 catch되어 이 인터럽트를 처리하면 을 다시 인터럽트하는 것이 좋습니다. 예를 들어 작업 스레드가 일련의 독립적 인 작업을 처리 할 때 사용할 수 있습니다. 현재 작업이 인 경우 인터럽트를 처리하고 작업을 무시하고 다음 작업으로 이동할 수 있습니다 , 차례로 이 중단 될 수 있습니다. 또한 스레드가 예외를 catch하고 이 오류 코드를 반환하는 등의 다른 방법으로 종료되거나 예외를 모듈 경계를 통과하도록 변환합니다.

관련 문제