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
[42477] Re:무작정 쓰레드를 쓰라고 하는건 좋은게 아닌것 같네요..
phenix [] 1148 읽음    2005-11-15 12:14
댓글이 메일로 와서 봤습니다. 마술감자님과 싸우자는 것 아니니 충분히 읽어보고 판단하시길...

저는 지난 6년간 motion controller 여러종류를 사용해왔고 지금도 현업에서 일하고 있습니다.
아마 질문자는 timer에서 while loop를 통해 motion done을 확인했을 겁니다. (소스는 보지 못했지만...)
질문자는 polling방식과 event방식중 polling방식을 선택했고 이것을 timer안에 while loop를 통해 상태를 파악했겠지요. 그래서 GUI가 원활히 동작하지 않았겠지요...
저도 질문자와 같은 초보자시절에는 같은 착오를 범했고 그것에 polling 방식에 대한 가장 안정적인 해결방법이 thread를 사용하는 것이고 이는 저 뿐만 아니라 이 업종에 종사하는 대다수의 사람들이 사용합니다.

단축구동에서는 마술감자님의 답변처럼 하면 될수도 있습니다. 그러나 2,3,4... 여러축이 구동하게 된다면 그리고 여러 IO와 엮이게 된다면 님의 답변방법으로는 한계에 부딛히게 됩니다.

물론 thread를 사용해야 겠다면 당연히 동기화를 알아야 겠지요.
그러나 이것을 공부하고 말고는 질문자가 선택할 사항입니다.

하지만 이러한 방법이 있으나 당신 수준에서는 이정도의 방법을 써라 하는것은 아는자의 논리가 아닐런지요...
정말 "장기적"으로 질문자를 생각한다면 어느 방법이 맞을까요?

그리고 질문자의 의도를 정확히 파악하신다면 질문자의 질문중 "서로 불리할려고 해도 쉽게 안되더군용", "서로 다르게 동작하게끔 하는 방법" 이란것의 의미는 다른 process를 사용하고 싶다는 의미가 아닐런지요.





마술감자 님이 쓰신 글 :
: 쓰레드를 쓰라고 하려면 코드를 정확히 판단하고 답변을 달아야 합니다.
: 모터 관련 코드가 다음과 비슷하다면 쓰레드를 사용하지 않아도 충분히 코딩이 가능합니다.
:
: while(is_done() == false)
:    NULL;
:
: 쓰레드를 사용하면 코드가 위와 같던, 아니던 100% 해결은 될 겁니다.
: 그런데 특정 기술이나 패턴을 사용하지 않아도 될 곳에 사용하면 부작용이 더 큽니다.
:
: 멀티 쓰레드를 사용하려면 충분한 학습을 하고 해야 하는데
: 무작정 적용하고, 안되니까 질문 하고, 또 답글 달면 1차적으로 해결 하고 반복하게 됩니다.
: 그 증거로, 바로 위에 질문글이 올라왔지요 [thread내에서 다른 클래스 참조...]
:
: 질문자의 학습수준을 생각해서 답글을 달았으면 좋겠습니다.
:
: 견웅님도 제가 분명히 코드를 더 보여달라고 했는데,
: 마음이 급해서 그러셨겠지만 답변자의 의견을 고려하시는것이 장기적으로 도움이 됩니다.
:
: phenix 님이 쓰신 글 :
: : thread 사용하세요.
: : 이게 정확한 답입니다.
: :
: : GUI에서 (정확히 GUI thread에서)
: : motor의 motion done check하랴 (아마도 님의 while loop의 목적?)
: : GUI LED 구동하랴 정신이 없을 겁니다.
: : motion과 관련된 부분은 thread를 사용하여 GUI를 쉬게 해주세요.
: :
: : 견웅 님이 쓰신 글 :
: : : 이번에 프로제트 하면서  모터를 구동하는 작업을 하게 됐습니다...
: : : 모터보드에서 제공하는 라이브어리를 이용해서 작업을 합니다..
: : : 그런데 문제가 생겨서 음..  여기에 질문을 올립니다..
: : :
: : : 현재 모토를 구동하면서 문제가 타임으로 해서 함수를 실행합니다.
: : : 모토구동하는 함수인데..  또다른 타임만들어서  led를 움직이는 작업을 합니다....
: : : 이러한 작업을 하는데 있어.. 문제가 생깁니다...
: : : 둘다 따로 돌아야 하는데.. 현재 모터가 많은 작업을 하면 led가 느리게 움직입니다.
: : : 항상 모터와 같이 움직이는 현상이 발생합니다..
: : : 현재 둘다 동기화가 된것같은데.. 서로 불리할려고 해도 쉽게 안되더군용...
: : : 음.. 현재 모터쪽에 while(0) 이러한 구문이 좀 있습니다.  
: : : 그래서 Application->ProcessMessges를 해서 해보왔지만 해결이 안되더군용...
: : : 음... 서로 다르게 동작하게끔 하는 방법이 없나 해서..
: : : 질문드립니다. 많은 의견좀 주세요..   ^^

+ -

관련 글 리스트
42457 timer의 동기화 문제... 견웅 1115 2005/11/14
42472     Re:timer의 동기화 문제... phenix 1064 2005/11/15
42474         무작정 쓰레드를 쓰라고 하는건 좋은게 아닌것 같네요.. 마술감자 1211 2005/11/15
42477             Re:무작정 쓰레드를 쓰라고 하는건 좋은게 아닌것 같네요.. phenix 1148 2005/11/15
42478                 음 그런가용 마술감자 995 2005/11/15
42486                     Re:음 그런가용 phenix 879 2005/11/15
42490                         Re:Re:음 그런가용 마술감자 983 2005/11/15
42480                     Re:음 그런가용 크레브 993 2005/11/15
42485                         Re:Re:음 그런가용 마술감자 932 2005/11/15
42487                             Re:Re:Re:음 그런가용 크레브 980 2005/11/15
42491                                 Re:Re:Re:Re:음 그런가용 마술감자 996 2005/11/15
42458     Re:timer의 동기화 문제... 마술감자 1230 2005/11/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.