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
[36018] Re:[질문] 2개의 버튼 백그라운드로 동작시키기..
유영인 Cuperido [cuperido] 823 읽음    2004-07-02 15:08
저도 아랫분들과 같은 의견인데.. 몇가지 참고 자료를 덧붙이자면...

폼, 버튼 A, 버튼 B 이렇게 실질적으로 3개의 쓰레드가 돌아가고 있는 상황인데,
크게 두가지 문제가 걸릴 수 있을것 같습니다.

아래 수야 형님 말씀대로 장치를 읽음으로써 커널쪽에 완전히 우선권을 뺏기는
경우이고요 (말씀하신대로 NT 계열에서는 이런 증상이 많이 사라졌습니다)
그리고 또한 쓰레드간의 Context Switching이 되지 않아서 일어나는 경우입니다.

쓰레드가 어떤 작업을 계속 하게 된다면 다른 쓰레드로는 Context Switching이
되지 않습니다. 간단한 방법으로는 메시지 처리를 할 수 있도록
Application->ProcessMessages()를 추가하는 방법이 있는데, 이 경우 프로그램의
순서가 병렬적으로 변경되니 구조상 문제가 없는지 다시한번 살펴 보아야 할
것입니다. (예로, A 버튼을 두번 눌러 쓰레드가 두번 생기지 않도록 한다든지 여부)

대부분 쓰레드를 돌리면 후자와 같은 문제가 발생합니다.
문제가 계속 된다면 비슷한 예제 코드를 하나 만들어서 올려보신다면 다른 분들께
더 큰 도움을 받으실 수 있지 않을까 싶습니다.

P.S : 처리가 끝나면 버튼을 누를 수 있다는 것으로 봐서는 장치 때문에 멈추는 것
같아 보이지는 않습니다. :)


cuperido


뒷마당 님이 쓰신 글 :
: 폼1에 버튼 a와 b가 있습니다.
: 구현하고자 하는 것은 a버튼을 클릭시 해당 이벤트가 수행되고,
: 그와 관계없이 b버튼을 눌러서 다른 작업을 동시에 수행하고자 합니다.
: 현재 a와 b 각각 스레드를 생성해서 돌아갑니다.
: 그런데.. a나 b 둘 중의 버튼 하나를 클릭하면 해당 작업이 끝나기
: 전까지는 폼이 먹통이 되고, 해당 작업이 끝나고 나서야 폼 클릭이
: 가능해지고 시작합니다. 즉 아예 버튼 클릭 조차 안되는 상황입니다.
: 좋은 방법 있으면 조언 바랍니다.
:
:
:

+ -

관련 글 리스트
36002 [질문] 2개의 버튼 백그라운드로 동작시키기.. 뒷마당 793 2004/07/01
36018     Re:[질문] 2개의 버튼 백그라운드로 동작시키기.. 유영인 Cuperido 823 2004/07/02
36016     Re:[질문] 2개의 버튼 백그라운드로 동작시키기.. 꿈꾸는빛.영준 821 2004/07/02
36005     Re:[질문] 2개의 버튼 백그라운드로 동작시키기.. 수야!╋ 852 2004/07/01
36010         수야님 혹시 이거 때문인지.. 뒷마당 771 2004/07/02
36011             Re:수야님 혹시 이거 때문인지.. 수야!╋ 772 2004/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.