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
[28588] 스레드와 BDE간에는 Synchronize가 필요없나요?
공부하는 이 [] 789 읽음    2004-01-20 09:25
DataModule 안에 TDatabase 와 TQuery를 생성하고
스레드안에서 쿼리를 할려고 합니다.
쿼리작업시간이 길때, 메인폼에서 다른 작업이 가능하고 또 쿼리 취소가 가능하게 하려는 목적입니다.

void __fastcall TThreadQuery::Execute()
{
    Synchronize(Update);
}
..
..


void __fastcall TThreadQuery::Update()
{
    DataModule->Query1->Open();
}

(DB부분 이외의 메인 폼VCL접근 부분은 모두 Synchronize를 사용하였습니다.)

위의 작업을 수행하니 쿼리 하는 동안 스레드를 쓴 효과가 전혀 없이 메인폼의 사용이 불가능 하더군요.
(장구에 SQL이라고 써있는 마우스 포인터 모양-_-;)
그래서 Synchronize를 사용하지 않고 그냥 프로그램을 돌리고 있는데 사용에 별 문제가 없네요-,.-;
이대로 그냥 사용 해도 될까요?
얼핏 BDE쪽 콤포넌트들은 스레드안전하다는 얘기도 들은거 같기도 한데..


추가..
정확히는 Query자체가 오래 걸린다기 보단 Query후 DataModule->Query1->Fields를 처리하는 과정이 오래 걸려서 스레드를 사용하려 합니다. 처리하여 ListView에 뿌려주는 부분은 역시 Synchronize를 사용했습니다. 단지 Query1->Open();작업이 Synchronize를 사용 안해도 되는지가 궁금하네요.

+ -

관련 글 리스트
28588 스레드와 BDE간에는 Synchronize가 필요없나요? 공부하는 이 789 2004/01/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.