|
Synchronize 함수의 정체부텀 밝히졉
그거 별거 아닙니다. 기타 과정도 있지만.. 하여간에
아무거두 안하구 내부적으로 SendMessage 를
메인 윈도에다 날리는 함수입니다.
그니깐 2차 쓰레드서 1차 쓰레드에 있는 윈도에 메시지를 날릴 경우...
2차 쓰레드는 스레드가 스위칭되서 1차스레드가 메시지를 처리한 담에
메시지 결과값을 리턴할 때까징 대기합니다
그니깐.... SendMessage 마구 날리믄 그만큼 비효율적이겠지만....
CPU 많이 먹는 플그램 아니면 상관 없쩌엽
글고 동기화가 필요없다면 메인쓰레드에다 PostMessage 로 메시지 날리는 것으로도
충분합니다.
초보중 초보^^; 님이 쓰신 글 :
: 제가 시리얼 통신을 이용한 프로그램을 짜서 사용하고 있습니다. 사실 지난 번 질문 했던 사람입니다. ^^;
: 그런데 동시에 표시해야 할 계측값의 종류가 많아서 (ComboBox, MaskEdit등등이 20개가 넘습니다)
: 밑의 코드안에서 처럼 하나의 Thread안에 4개의 Synchronize함수(Display 1,2,3,4)를 쓰고있습니다. 이러면 프로그램이 느려지나요?
: 실행은 잘 되는데 실행을 시키면 updown component가 한 참을 눌러야 반응이 올만큼 너무 느립니다.
:
:
: -----------------------------
: __fastcall TRead::TRead(bool CreateSuspended)
: : TThread(CreateSuspended)
: {
: }
: //--------------------------------------------------------------
:
: void __fastcall TRead::Display1()
: {
: 제가 짠 코드...계측기와 Handshaking하고 값을 읽어오지요..
:
: }
:
: //--------------------------------------------------------------
: void __fastcall TRead::Execute()
: {
: //---- Place thread code here ----
:
: DWORD dwBytesRead;
: FreeOnTerminate = true;
: ......................
: while(1)
: {앞부분.......................
:
: Synchronize(Display1);
: Synchronize(Display2);
: Synchronize(Display3);
: Synchronize(Display4);
:
: 뒷부분......................
: }
:
: }
:
:
|