Qt에서 알 수 있듯이, 신호가 발생한 후에 원하는 모든 것을 슬롯에 넣을 수 있지만 나중에 코드를 편집 할 때 사용할 수 있습니다. 그것은 많은 구조 조정을 요구할 수 있으며, 일을 복잡하게 만들 수 있습니다. 예를 들어 말처럼 신호가, Qt는 방출 될 때까지 프로그램이 Qt에서 신호를 기다리는 가장 간단한 방법은 무엇입니까?
은 프로그램을 보유하는 더 간단한 방법이 있나요 : 또한downloadImage();
Qt::waitForSignal(downloadImageFinished());
editImage();
; 왜이 작품 같은 게 안되니?
// bool isFinished();
downloadImage(); // When done, isFinished() returns true;
while (!isFinished()) {}
editImage();
? 감사.
잘못된 질문을하고 있습니다. 우리 주변의 세계는 단순하지 않고 선형으로 진화하지 않습니다. 상황이 비동기 적으로 발생합니다. 이를 반영하기 위해 코드를 구조화해야합니다. 질문에 표시되는 의사 동기 코드는 암시 적 상태 시스템입니다. 상태 기반 동작을 명시 적으로 지정하면 더욱 명확하고 융통성있게됩니다. * 많은 구조 조정이 필요하고, 일을 복잡하게 만들 수 있습니다. * 잘못했을 때만. 귀하가하고자하는 것에 대한보다 완전한 예를보기 위해 질문을 편집하십시오. 그렇게하면 복잡성에 대한 근거없는 가정을 해결할 수 있습니다. –
@KubaOber 때로는 프로그램을 종료하기 전에 모든 활동이 끝날 때까지 대기하고 모든 잠금이 해제 될 때까지 기다려야하는 경우가 있습니다. 무거운 비디오를 처리하는 동안 사용자가 'X'창 버튼을 눌렀을 때 멈추지 않고 실행했습니다. 많은 스레드가 가동되었고 많은 자원이 할당되어 뮤텍스가 잠기지 않은 경우 시스템 종료시 가끔 충돌과 경고가 발생했습니다. 정확히. –
사용자가 창을 닫으려면 해당 창을 닫을 지 여부와 코드가 사용자에게 제공 할 피드백에 대해 완전히 제어 할 수 있어야합니다. Leontyev, 당신은 매우 구체적인 질문이있는 것 같습니다. 당신은 새로운 자체 포함 질문을 게시 할 수 있습니다. 여기에는 몇 가지 스레드 또는 겹침을 만들고, 자물쇠를 획득하고, 문제를 보여줍니다. <200 줄에 맞을 것입니다. 그래야만 당신이 기대하는 문제를 회피 할 수있는 해결책을 제시 할 수 있습니다. 그렇지 않으면, 너무 추상적이어서 이야기 할 수 없습니다. –