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

델파이 Q&A
Delphi Programming Q&A
[13822] Re:Re:DB커넥션 관련 고민이 있네요.
무간류 [] 1961 읽음    2011-09-02 16:47
답변감사합니다.
그런데 쓰레드에서 동적 할당한 메모리도 다 해제가 되는겁니까?
좋은 하루 되세요.

Lyn 님이 쓰신 글 :
: 프로그램을 종료하면 어차피 할당된 메모리 다 공중분해 되므로 상관없습니다
:
: 무간류 님이 쓰신 글 :
: : 복잡한 쿼리를 DB에서 처리할경우 어느 정도 시간이 걸립니다.
: : 저희 개발서버에 있는 DB에도 데이터 건수가 많은 관계로 복잡한 쿼리를 수행하면
: : 결과 표출까지
: : 7~8분 많게는 10분 넘게 걸리는경우가 많습니다.
: : 이런 쿼리를 기준으로 DB 조회 프로그램을 설계할 때 보통 쓰레드를 많이 쓰지않나요?
: :
: : 저에게는 다음과 같은 고민이 있습니다.
: : DB환경:오라클/ 컴포넌트 환경: TSQLQuery
: : TSQLQuery가 OPEN 된 시점에서는 대기상태가 됩니다. 즉 엑세스가 불가능하죠.
: : 이 때  수행하는 쿼리가 복잡하다면 대기상태는 더 길어지고 사용자는 지루해 하며, 쿼리를 취소하고 싶어질 것입니다.
: : 일단 TSQLQuery가 메인폼에 있다면 MainForm이 얼어버리는 관계로 일단은 TSQLQuery를 쓰레드에 위치시켰습니다.
: :
: : 사용자가 쿼리수행명령을 내리면 쓰레드가 생성되고 TSQLQuery가 동적생성이 되어서 쿼리를 수행합니다.
: : 하지만 사용자는 쿼리 결과가 한참이 지나도 안나오자 수행중이던 쿼리를 중지 시키고 싶어 합니다.
: : 이럴때는 머 TSQLQuery가 Open이 끝나는 시점이 되면 쓰레드는 종료되는 관계로 쓰레드 종료 이벤트에서 처리하면 되지요. 그리고 쓰레드가 종료될 때 동적할당한 TSQLQuery를 해제하는겁니다.
: : 여기까지는 문제가 없습니다만. 
: : 제가 고민이 되는 부분은 바로 쿼리가 쓰레드에서 수행중인 시점에서 사용자가 프로그램 종료 할 때 입니다.
: : 지금 쓰레드에서 수행중이던 쿼리가 언제 완료될지도 모르는데 사용자는 이미 프로그램 종료 명령을 내린 상태에서
: : 쿼리 수행이 끝이 나길 마냥 기다릴 수 없는 상황입니다.
: : 쓰레드는 강제종료 후 프로그램을 종료 할 수 있지만  그렇게 되면 동적 할당 된 TSQLQuery는 해제 할 수 없게 됩니다.
: : 음 제가 개발경험이 적다보니 이런 고민을 하게 되네요.
: : 어떤 방향으로 가야 사용자 편의와 메모리관리가 잘 이루어지는 프로그램을 만들수 있을까요?
: : 많은 조언부탁드립니다.

+ -

관련 글 리스트
13820 DB커넥션 관련 고민이 있네요. 무간류 1929 2011/09/02
13821     Re:DB커넥션 관련 고민이 있네요. Lyn 1689 2011/09/02
13822         Re:Re:DB커넥션 관련 고민이 있네요. 무간류 1961 2011/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.