특정 작업을 수행하는 데 사용하는 부스트 스레드 풀이 있습니다. 순수한 가상 함수 doWork(int total) = 0;
이있는 Sensor 클래스도 있습니다. 요청이있을 때마다 주 프로세스가 필요한 센서 포인터를 가져오고 스레드 풀에 Sensor::doWork(int total)
을 실행하도록 지시합니다.신호 잡기 C++
threadpool->schedule(boost::bind(&Sensor::doWork,this,123456));
동적으로 입력 센서의 라이브러리를로드하고 다른 사람이 세그먼테이션 폴트 (segfault)와 같은 결과 결함 코드가있는 경우, 따라서 내 통제 불능이다. 그래서 (내 주요 프로세스에서) Sensor::doWork(int total)
에 의해 던져진 모든 오류를 처리하고, 스레드를 정리하고, 해당 센서 개체를 삭제하고, 오류가 발생한 콘솔을 어디서 알리는 방법이 있습니까?
"신호 잡기"는 "segfault에서 복구"와 다른 점입니다. 전자가 가능하고, 후자가 불가능합니다. –
동적 라이브러리가 segfault를 던지는 대신 신호를 잡는 방법이 있습니까? – joshua
표준''C 라이브러리를 사용하여 신호를 잡을 수 있습니다. 그러나 그렇게 중요하지 않습니다. 중요한 것은 인과 관계입니다. 세그 폴트는 신호를 유발합니다. 그러나 신호는 segfault를 막을 수는 없습니다 (시간이 지나면 부족합니다). –