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
[59958] Re:Indy9에서 OnExecute 이벤트 내부의 동기화(?)
둘리.CSIEDA [dooly386] 1580 읽음    2010-01-25 14:39
Sync 와 Critical Section이 어떻게 process를 멈추는지를 잠깐 설명 드릴께요.

thread는 각자 하나의 process 입니다. 이 process는 제각각 돌겠죠.
돈다는것은 c 코드에서 본다면 수행 라인을 하나하나 수행해 나간다는 뜻입니다.

이러다가 sync 나 Critical Section에 오면 앞서 온 프로세스가 sync 를 걸었는지 또는 critical section으로 들어 갔는지 확인합니다. 만약에 앞선 process 가 sync 또는 critical section을 점유하고 있으면 뒤따르는 thread들은 진입을 못합니다.

이러한 상황을 생각해보죠.

프로세스1 이 (thread1) 이 ado 로 데이터를 주고 ado 가 서버랑 통신을 합니다. sync 나 critical 을 걸지 않은 상태라고 가정해보조

뒤따르는  프로세스2는 ado 까지 갑니다. 통신 이전까지 select 구문이나 기타 뭔가 준비해야겠죠.
여기까지 갑니다. 그러한 ado 자체의 어떠한 특성을 바꾸는 것이 ado가 통신중에 일어나고 해당 property 들을 ado가 통신중에 사용한다면.. 어떻게 될까요..

오류가 날 수 있죠.

thread process는 이렇게 sync 나 critical 진입부분에서 멈추게 됩니다.

그러므로 ado를 access하기전에 sync를 걸어 블럭을 해주셔야 합니다.



용맨소녀 님이 쓰신 글 :
: 예전에 Indy9의 OnExecute에서 ADO쓸때 동기화에 관한 질문을 했었습니다. ADO호출시 Synchronize를 해야한다는 것이었는데요.. (전 OnExecute이벤트가 하나씩 순차 호출되는걸로 잘못 알고..ㅡ.ㅡ)
:
: 그럼... 패킷쪽도 같은 식으로 처리해야 하는거란 뜻인데요.. 그런거라면 Synchronize같은거 안쓰고 아예 패킷처리부를 크리티컬 섹션으로 덮어야하는게 깔끔하지 않나 생각됩니다. DB는 큐를 쓰면 될거고요..
:
: 예를 들어서.. 이렇게 한다면 대충 무난할까요? 지금 만드는건 패킷이 띄엄띄엄오는 거라 성능은 신경안쓰고 만들고 있지만.....
:
: 암튼, 아래 방식으로 한다면 크레이지아케이드류같은 게임에서 1000명은 커버할려나요? ^^
:
: 경험많으신 고수님들 답변 부탁드립니다..
:
: void __fastcall TWin_Main::ServerExecute(TIdPeerThread *AThread)
: {
:     EnterCriticalSection(&Cs);
:     ProcessPacket(AThread); // 이 안에서 DB 관련은 큐로 처리..
:     LeaveCriticalSection(&Cs);
: }

+ -

관련 글 리스트
59952 Indy9에서 OnExecute 이벤트 내부의 동기화(?) 용맨소녀 1114 2010/01/25
59958     Re:Indy9에서 OnExecute 이벤트 내부의 동기화(?) 둘리.CSIEDA 1580 2010/01/25
59965         Re:Re:감사합니다.. 용맨소녀 892 2010/01/25
59953     Re:Indy9에서 OnExecute 이벤트 내부의 동기화(?) 둘리.CSIEDA 1582 2010/01/25
59956         Re:Re:친절한 답변 감사드리고요.. 또 생기는 궁금증이.. 용맨소녀 1267 2010/01/25
59957             Re:Re:Re:친절한 답변 감사드리고요.. 또 생기는 궁금증이.. 둘리.CSIEDA 1280 2010/01/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.