비동기 통신 관리 : 다른 스레드에서받은 응답을 검사하는 방법

자르

디스패처 스레드와 리스너 스레드가 있습니다. 명령을 보낼 때 후속 명령을 보내기 전에 응답을 기다리고 싶습니다. 또한 두 번째 명령을 진행하기 전에 응답을 검토해야합니다. 그 중 최소한 응답이 수신되고 모든 것이 정상인지 확인하는 것입니다. 내 의사 코드는 다음과 같습니다.

void MainWindow::downloadData()
{
    dispatcher->getInfo(); // sends command

    // QString response = receiver->response() // idealy I would like to check response but since its async, i can't really do that!

    dipatcher->askData(); // the 2nd command and so forth

}

이 문제를 해결하는 우아한 방법이 있습니까? 내가 생각할 수있는 유일한 방법은 동일한 스레드를 사용하고 모든 호출이 차단되지만 반드시 좋은 해결책은 아닙니다.

Qt에서는 신호와 슬롯을 사용하여 계단식으로 연결할 수 있으므로 첫 번째 신호가 트리거되면 전체 작업 시퀀스 (각 슬롯이 새 신호를 방출 함)를 시작하지만 다소 더러워 보입니다.

발렌틴 하이 니츠

비동기 이벤트를 처리하고 이러한 이벤트에 대한 작업 체인 / 그래프를 처리하는 가장 강력한 방법 중 하나는 FSM입니다. Qt는 Qt-State 머신 프레임 워크로 FSM을 구현하기위한 기반을 제공합니다 . 나는 이쪽으로가는 것이 좋습니다. 불행히도 Qt for FSM에서 제공하는 모든 예제는 GUI와 애니메이션을 다루고 있습니다.

FSM 접근 방식의 장점은 FSM을 그래프와 테이블로 표현할 수 있다는 것입니다. 첫 번째 옵션은 끝없는 루프와 "데드"엔드가 없다는 것을 이해하는 데 유용하고 두 번째 옵션은 검증 용입니다.

도메인 별 언어로 FSM을 정의하기위한 Qt-FSM 프레임 워크 자체 프레임 워크를 기반으로 구축했습니다. 나는 두 개의 센서 액터가 모두 비동기 적으로 작동하는 복잡한 기계를 제어하는 ​​데 사용합니다. DSL을 사용하면 FSM 그래프의 추상화 수준에서 더 높은 추상화를 구현하는 데 도움이됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 8. 캔 사람이 처리하는 방법에 대한 통찰력을 제공하는 병렬 스트림을 사용할 때이 같은 요청에 대해 서로 다른 크기의 응답을 받고 있어요?

분류에서Dev

PrivateRoute-비동기 응답을 기다리는 방법?

분류에서Dev

vert.x에서 응답을 기다리는 스레드를 차단하는 방법은 무엇입니까?

분류에서Dev

TCP 기반 통신에 Spring 통합 BarrierMessageHandle을 사용하는 동안 늦은 응답을 얻는 방법

분류에서Dev

비동기 함수에서 가져 오기 응답을 기다리는 방법은 무엇입니까?

분류에서Dev

응답을받는 동안 내 웹 서비스를 다루고 있습니다-서버 측에서 응답을받는 방법은 무엇입니까?

분류에서Dev

응답을받는 동안 내 웹 서비스를 다루고 있습니다-서버 측에서 응답을받는 방법은 무엇입니까?

분류에서Dev

JsDialog 응답을 기다리는 방법?

분류에서Dev

HttpWebRequest 콜백 메서드가 응답을받을 때까지 동기식으로 기다리는 방법

분류에서Dev

jmeter에서 특정 응답을받을 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

아약스 응답을 기다리는 방법?

분류에서Dev

RestSharp 동일한 쿼리에 대해 다른 JSON 응답 형식을 처리하는 방법

분류에서Dev

다른 스레드가 HTTP 응답을 기다리는 동안 다른 스레드가 실행됩니까?

분류에서Dev

다음으로 이동하기 전에 URL 배열을 반복하고 응답을 기다리는 방법

분류에서Dev

첫 번째 WCFservice 적중은 응답하는 데 시간이 걸립니다. WCF 서비스의 유휴 시간을 관리하는 방법

분류에서Dev

다른 스레드가 C #에서 서버 응답을받을 때까지 스레드를 차단하는 방법

분류에서Dev

Ember JS-렌더링 전에 비동기 함수가 응답하기를 기다리는 방법

분류에서Dev

비동기 웹 서비스 응답에서 관리 객체를 업데이트하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Apache Camel Netty4를 사용하여 비동기 모드에서 설정된 TCP 연결을 통해 응답을 다시 보내는 방법은 무엇입니까?

분류에서Dev

SoapUI의 그루비 스크립트를 통해 통화 변환기 서비스 응답에서 응답 값을 얻는 방법은 무엇입니까?

분류에서Dev

발리를 통해 HTML 응답을받는 방법

분류에서Dev

Retrofit 2.0을 사용하여 다른 스레드에서 응답을 얻는 방법

분류에서Dev

jQuery Ajax 메서드와 함께 사용하는 동안 Php 스크립트에서 응답을 받고 처리하는 방법

분류에서Dev

웹 서비스에서받은 xml 응답을 가져 와서 데이터 소스로 만드는 방법

분류에서Dev

Swagger 2.0에서 다중 400 응답을 처리하는 방법

분류에서Dev

클라우드 기능으로 Google 장기 실행 작업에서 비동기 응답을 처리하는 가장 좋은 방법

분류에서Dev

Python에서 curl 명령을 실행하고 응답을 받고 다른 코드를 통해 전달하는 방법

분류에서Dev

guzzle을 사용하여 응답 다운로드를 시작하기 전에 엄청난 HTTP 응답을받을 것임을 감지하는 방법

분류에서Dev

비어있을 수있는 rxjs 관찰 가능한 응답을 처리하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    자바 8. 캔 사람이 처리하는 방법에 대한 통찰력을 제공하는 병렬 스트림을 사용할 때이 같은 요청에 대해 서로 다른 크기의 응답을 받고 있어요?

  2. 2

    PrivateRoute-비동기 응답을 기다리는 방법?

  3. 3

    vert.x에서 응답을 기다리는 스레드를 차단하는 방법은 무엇입니까?

  4. 4

    TCP 기반 통신에 Spring 통합 BarrierMessageHandle을 사용하는 동안 늦은 응답을 얻는 방법

  5. 5

    비동기 함수에서 가져 오기 응답을 기다리는 방법은 무엇입니까?

  6. 6

    응답을받는 동안 내 웹 서비스를 다루고 있습니다-서버 측에서 응답을받는 방법은 무엇입니까?

  7. 7

    응답을받는 동안 내 웹 서비스를 다루고 있습니다-서버 측에서 응답을받는 방법은 무엇입니까?

  8. 8

    JsDialog 응답을 기다리는 방법?

  9. 9

    HttpWebRequest 콜백 메서드가 응답을받을 때까지 동기식으로 기다리는 방법

  10. 10

    jmeter에서 특정 응답을받을 때까지 기다리는 방법은 무엇입니까?

  11. 11

    아약스 응답을 기다리는 방법?

  12. 12

    RestSharp 동일한 쿼리에 대해 다른 JSON 응답 형식을 처리하는 방법

  13. 13

    다른 스레드가 HTTP 응답을 기다리는 동안 다른 스레드가 실행됩니까?

  14. 14

    다음으로 이동하기 전에 URL 배열을 반복하고 응답을 기다리는 방법

  15. 15

    첫 번째 WCFservice 적중은 응답하는 데 시간이 걸립니다. WCF 서비스의 유휴 시간을 관리하는 방법

  16. 16

    다른 스레드가 C #에서 서버 응답을받을 때까지 스레드를 차단하는 방법

  17. 17

    Ember JS-렌더링 전에 비동기 함수가 응답하기를 기다리는 방법

  18. 18

    비동기 웹 서비스 응답에서 관리 객체를 업데이트하는 가장 좋은 방법은 무엇입니까?

  19. 19

    Apache Camel Netty4를 사용하여 비동기 모드에서 설정된 TCP 연결을 통해 응답을 다시 보내는 방법은 무엇입니까?

  20. 20

    SoapUI의 그루비 스크립트를 통해 통화 변환기 서비스 응답에서 응답 값을 얻는 방법은 무엇입니까?

  21. 21

    발리를 통해 HTML 응답을받는 방법

  22. 22

    Retrofit 2.0을 사용하여 다른 스레드에서 응답을 얻는 방법

  23. 23

    jQuery Ajax 메서드와 함께 사용하는 동안 Php 스크립트에서 응답을 받고 처리하는 방법

  24. 24

    웹 서비스에서받은 xml 응답을 가져 와서 데이터 소스로 만드는 방법

  25. 25

    Swagger 2.0에서 다중 400 응답을 처리하는 방법

  26. 26

    클라우드 기능으로 Google 장기 실행 작업에서 비동기 응답을 처리하는 가장 좋은 방법

  27. 27

    Python에서 curl 명령을 실행하고 응답을 받고 다른 코드를 통해 전달하는 방법

  28. 28

    guzzle을 사용하여 응답 다운로드를 시작하기 전에 엄청난 HTTP 응답을받을 것임을 감지하는 방법

  29. 29

    비어있을 수있는 rxjs 관찰 가능한 응답을 처리하는 방법은 무엇입니까?

뜨겁다태그

보관