- 문제 설명
- 공정 1 : 카메라로부터 영상 데이터를 획득 한 후, CV : 매트 오브젝트 (오브젝트 데이터를 교환하기 위해, 글로벌 변수 임)에 저장된다. 카메라가 자동으로 콜백 함수에 의해 호출됩니다.
- 공정 2 : 전술 전역 변수 사본 및 qimg 변환은 Qt는 디스플레이 화면에 배치. 이 과정은 타이머에 의해 호출됩니다.
- 그런 프로그램이 몇 시간 동안 실행하는 "프로그램이 비정상적으로 국지적 인 프로세스가 강제로 종료되었습니다 종료됩니다.". 시간 변화의 실행됩니다.
- 문제 해결 및 분석
- 마지막으로,이 정말 이유가 있는지 여부를 테스트합니다. 슬롯 기능 클릭 버튼의 접속 작업을 선언. .clone ()를 호출하고 잠겨 있지.
void QtGuiApplication1::on_btnThread_clicked()
{
auto myThread = [] {
while (1) {
if (!temp_forSave.empty()) {
Mat lalala = temp_forSave.clone();
std::cout << "在创建线程中复制\n";
}
std::cout << "创建线程" << std::this_thread::get_id() << "运行" << endl;
}
};
std::thread a(myThread);
a.join();
}
- (스레드 (1) 복사 할 때 동안, 결국) 정상 작동하는 동안, 버튼을 클릭, 프로그램이 즉시 충돌합니다. 검증은 성공적이다.