c++ event 예제

가장 먼저 주의해야 할 점은 두 이벤트를 선언하기 위해 이벤트 키워드를 사용하는 것입니다. 발생하려는 각 이벤트에 대해 하나의 이벤트 선언이 필요하며 해당 형식은 이벤트와 연결된 대리자의 선언입니다. 따라서 첫 번째 이벤트 개체의 경우 형식은 FirstEventHandler^와 일치하도록 합니다. 이벤트 키워드를 사용하면 컴파일러가 많은 대리자 처리 코드를 생성합니다. 정확히 무슨 일이 일어나고 있는지에 관심이 있다면 다음 섹션을 참조하십시오. 그런 다음 EvtSrc 클래스의 이벤트 개체를 사용하여 함수 호출인 것처럼 사용하고 적절한 인수를 전달하여 이벤트를 발생시킬 수 있습니다. 10. EvtRc생성자는 인수를 취하지 않지만 EvtRcv 생성자는 유효한 EvtSrc 포인터를 전달해야 합니다. 이 시점에서 수신기가 설정되어 소스에서 이벤트가 발생되는 것을 수신합니다. 다음 코드를 추가합니다. 이벤트 클래스를 시연하기 위해 일부 이벤트를 게시하기 위한 게시자 클래스를 만듭니다.

예: C++에는 이벤트에 대한 기본 제공 지원이 없습니다. 일종의 스레드 안전 작업 큐를 구현해야 합니다. 기본 메시지 처리 스레드는 이 큐에서 항목을 계속 꺼내서 처리합니다. 일반적으로 이벤트를 사용할 때 발생한 일에 대한 알림을 게시하고 일부 구독자가 필요한 구현을 구독하도록 하려고 합니다. 이를 위해 일부 이벤트 처리기를 함께 조인하고 사물(이벤트)이 발생했을 때 모든 이벤트 처리기를 호출할 수 있는 방법이 필요합니다. 동시성을 사용하는 인수는 코드 의 여러 부분에 걸쳐 커플링을 방지한다는 것입니다. 즉, 종료 단추를 보기 위해 별도의 스레드를 실행하는 경우 프로그램의 정상 작업은 종료 단추 또는 지켜야 할 다른 작업에 대해 알 필요가 없습니다. 이벤트 클래스가 있는 후에는 이벤트 처리기를 호출하는 함수를 추가할 수 있습니다. 일부 스레드에서 이벤트를 동시에 사용할 수 있으므로 모든 이벤트 처리기가 구현을 완료할 때까지 다른 스레드가 이벤트를 사용하지 못하도록 차단하고 싶지 않습니다(처리기 추가 및 제거, 이벤트 호출). 이벤트 처리기의 복사본입니다.