C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[67358] Re:이벤트 Callback 함수의 여러번 호출되는 경우에...
송신영 [palindrome] 2255 읽음    2012-05-29 16:42
1. 네 여러 곳에서 호출해도 됩니다.
    들어온 순서대로 처리되겠죠.

2. UI도 하나의 쓰레드로 돌아갑니다. 그러니 한번에 한가지 일만 할 수 있습니다.
    만약 callback 함수에서 새로 쓰레드를 생성하여 돌리지 않는다면
    callback 함수를 다 완료한 후에 다음 메시지를 처리합니다.
    멀티 쓰레드(작업 쓰레드)를 사용할 경우 GUI와의 동기화를 위해 SendMessage를 사용 할 수 있는데요.
    Callback 함수에서 다시 동기화를 위한 추가 작업이 필요하지는 않겠죠...
     (Callback 함수에서 사용된 변수들이 다른 쓰레드 에서 사용되지 않는다는 가정하에...)
    하나의 쓰레드가 SendMessage를 호출하게 되면 이 메시지가 완전히 수행 될 때 까지
    해당 쓰레드는 멈추어 있습니다.

파라도사 님이 쓰신 글 :
: 일반적으로 윈도우시스템에서는
: 이벤트가 발생하여 메인윈도우로 메세지를 보내면 해당되는 callback함수가 수행이 되는데요,
: 이벤트 아이디가 'WM_EVENT_T'라고 가정하고, callbakc함수에서는
: 메세지안에 있는 Payload값에 따라서 Switch/Case문으로 처리를 합니다.
:
: 2가지 질문이 있습니다.
:
: 1. 'WM_EVNET_T'메세지를 여러 곳에서 SendMessage()함수를 통해서 발생을 해도 되는 건가요?
:  - 메인윈도우에 전송이 될 터인데, 여기에는 큐형태에 저장이 되는거지요.(?)
: - 그렇다면, 들어온 순서대로 순차적으로 큐에 저장이 되는건가요.
:
: 2. Call back함수가 call이 될 때, 첫번째 call이 되어 수행 중일 때, 다음 메세지가 발생한다면,
:   이때 수행절차가 어떻게 되나요?
:  - 처음 메세지를 callback함수가 수행완료된 후에 두번째 메세지에 의해서 수행이 되는 건가요?
:    (callback함수가 수행후 종료될때까지 blocking이 된다.)
:    아니면, 새로운 메세지가 올때마다 블락킹이 없이 callback함수가  동시에(약간의 지연 수행)수행이 되는 건가요?
:
: *정리하자면,  어떤 메세지를 여러곳에서 발생시키고, 이 메세지를 하나의 Callback함수에서 순차적으로
: 처리할 수 있느냐 ? 만약에, blocking이 안된다면 callback함수 안에서 blocking을 프로그램적으로
: 처리할 방법이 뭐가 있을까요? While문, Flag 등등.

+ -

관련 글 리스트
67357 이벤트 Callback 함수의 여러번 호출되는 경우에... 파라도사 1464 2012/05/29
67358     Re:이벤트 Callback 함수의 여러번 호출되는 경우에... 송신영 2255 2012/05/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.