2014-08-31 2 views
0

내부적으로 서버에 연결하는 GUI 응용 프로그램을 작성 중입니다. 사용자는 GUI 응용 프로그램을 사용하여 연결되면 요청을 보내고 서버에서 데이터를 가져올 수 있습니다.GUI 응용 프로그램의 이벤트 처리 스레드 C++

처음에는 버튼 하나로 클릭 한 응용 프로그램이 수신 한 이벤트를 구문 분석하여 서버에 요청하여 필요한 데이터를 가져 오는 단일 스레드 설계를 시작했습니다. 이 시점에서

, 우리는 아직 프로토 타입 일을하고 있지만이 작동하는 방식에 다음과 같이 변경의 생각 -
  1. 은 사용자가 무언가를 클릭 할 때 이벤트를 수신하는 이벤트 핸들러 스레드를 가지고.

  2. 이 스레드는 이벤트를 처리하고 적절한 기능을 호출하고 서버에 요청을 보냅니다. (이 모든 것은 이벤트 처리기 스레드의 컨텍스트에서 발생합니다)

  3. 응용 프로그램이 서버에서 데이터를 기다리는 동안 수신되는 이벤트는 어떻게 처리합니까? 나는 이벤트 처리기 스레드가 이전의 진행중인 요청을 거절하고 새로운 이벤트를 받았다고 생각하고 있었다. 사용자 관점에서 볼 때 이전 버튼이 응답을 기다리고있을 때 사용자가 새 버튼을 클릭하면 이전에 수행했던 작업을 덤프하고 새 버튼 클릭을 처리해야합니다.

제발 여기에 의견을주십시오. 이것은 클라이언트 GUI 응용 프로그램에서 작업하고 있으며이 응용 프로그램에서 입력을 요청한 첫 번째 것입니다.

+0

다른 스레드에서 요청을 보내면됩니다. – ikh

+0

응용 프로그램이 서버에 처음으로 호출 한 결과 (웹 브라우저와 마찬가지로)를 무시하는 것이 적절합니까? 무시해도 부작용이 없습니다. – Steve

답변

0

몇 가지 전략이 있습니다. 응용 프로그램에서 결과를 무시하는 것이 적절하면 연결을 취소하고 새 연결을 실행할 수 있습니다. 그러나 일부 서버 응용 프로그램은 이것을 좋아하지 않습니다.

응용 프로그램에서 레코드를 업데이트하는 데이터베이스 호출과 같이 연결을 끊는 것이 적절하지 않은 경우 큐에서 요청을 실행하고 큐에 요청을 넣으면 스레드가 스레드를 끌어 와서 처리합니다 작업을 완료 한 후 응용 프로그램에이를 알립니다.

또 다른 방법은 자체 스레드에서 각 요청을 실행하는 것입니다. 이렇게하면 원하지 않는 결과를 무시하거나 한 번에 두 개 이상의 작업을 수행 할 수 있습니다.