2015-01-20 1 views
0

나는 boost_read_group을 사용하여 catch 신호를 보내고 thread_group에 interrupt_all()을 보냈습니다. 거의 항상 인터럽트 지점을 통과하지만 인터럽트되지 않는 스레드가 있습니다 (!). 아마 듀얼 코어 프로세서를 사용하는 것이 원인 일 수 있다고 생각했습니다. 그러나 한 코어에서 모든 스레드를 시작하도록 설정하더라도이 문제가 발생합니다.thread_group의 한 스레드가 인터럽트되지 않았습니다.

어떤 이유가있을 수 있습니까?

내 자신의 (전역) interrupt_point를 만드는 것은 내 마음에 오는 유일한 해결책입니다.

답변

1

스레드 인터럽트가 거의 모든 플랫폼에서 "신뢰할 수있는"기능인 적이 없었습니다. 프로그램에 의존하는 경우 다시 디자인하는 것이 좋습니다.