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
[42490] Re:Re:음 그런가용
마술감자 [magicpotato] 983 읽음    2005-11-15 15:22
음 오랫만에 재밌는 토론이 될까 기대하고 있었는데; 예상치 못한 글을 올리시는군요 -.-;
경직된 분위기를 풀어볼까 했는데, 제 글이 장난처럼 보였다면 제가 잘못했습니다.

의견이 다르면 토론을 해서 인정할 부분이 있으면 인정을 하고, 아니면 아닌겁니다.
굳이 화는 내지 말았으면 좋겠습니다.


저는 모터와 관련된 업종이 아니기 때문에 지식이 부족하니
하드웨어의 사양에 대해서 안 다음, 토론을 하고자 질문을 올렸거든요.

제가 먼저 뭘 말하고 싶은지 적어보도록 하겠습니다.
"매번 호출해야 하는 주요 함수가 정말 많은 시간동안 블록 되는가?" 를 물어 본겁니다.

모터든 뭐든 뭔가 함수 호출을 하고 나서, 응답시간이 50ms 미만이라면 굳이 쓰레드를 사용하지 않아도 됩니다.
100ms 이상이 나오는 부분이 있다 해도, 시작부 이거나, 종료부라면 역시 굳이 사용하지 않아도 됩니다.

C언어 입문자가 포인터를 먼저 공부하는 것보다는 수준에 따라 밟아야 할 단계가 있다는건 잘 아실껍니다.

제가 계속 문제를 삼는것은 두가지 입니다.
"초보자에게 고급 기술을 권장하는것은 좋지 못하다"
"안 써도 되는 기술을 굳이 사용하지 않아도 된다"

쓰레드 편하지요, 스테이트 처리에 대해서 논리적으로 깊게 고려하지 않아도 되고
이미 완성된 쓰레드 라이브러리나, 빌더의 쓰레드 컴포넌트를 사용하면 정말 편하게 프로그래밍 됩니다.
이미 아시겠지만 전제가 있습니다.

이건 짧게 적어도 납득 하셔야 합니다.
싱글 쓰레드 프로그램 구조와, 투 쓰레드 이상의 프로그램 구조는 고려 해야할 이슈가 정말 많이 차이납니다.
유지보수나 사후처리도 제법 차이가 납니다.

상대의 학습상황을 고려하지 않고,
나는 이 분야에서 몇년 일했는데, 그 문제는 쓰레드면 다 해결된다.
라는것은 선배가 후배를 위하는것이 아닙니다.

간단한 전화번호부 프로그램을 숙제로 짜려는데
무겁고 비효율적이더라도 FileDB나 간단한 ODBC Access같은것을 쓰면 되는데,
개인 취향으로 자료 찾기도 힘든 파라독스나, 오라클같은걸 괜히 추천해서
배보다 배꼽을 크게 만드는 경우를 많이 봤습니다.

오라클 좋죠. 그런데 처음 하는 사람이 쓸건 못됩니다.


남이 이미 답을 단 글에 답할 때에는 최소의 예의가 필요하지 않을까요?
"윗 분이 이런이런 글을 적었는데, 이런 방법이 더 좋습니다."
"보충 설명을 하겠습니다" 로 시작하는게 좋다고 생각합니다.

phenix님이 스스로의 글이 옳다고 생각 하시는것처럼, 제가 처음 단 글도 옳다고 생각하고 적었기 때문입니다.


phenix 님이 쓰신 글 :
: 마술감자님...
: 성숙한 인터넷 사용자라면 초등학생과 같은 유치한 장난은 하지 않으시리라 생각하고 싶습니다.
: 본인의 의견과 다르다는 이유로 이런식으로 타인의 실력을 떠보려는 의도적 질문은 답변의 가치가 없다 여겨집니다.
:
:
: 마술감자 님이 쓰신 글 :
: : 궁금한게 생겼네요.
: : 나중에 하드웨어 관련 답변을 달때 참고하고 싶습니다.
: :
: :
: : 대충 아래와 같은 코드 구조겠지요
: :
: : m->set_work();
: : while(m->is_done())
: :   NULL;
: : show_msg("done");
: :
: : 작업하는 환경에서의 모터가 어느 수준의 인터페이스를 갖는지 궁금합니다.
: :
: : 일반적인 모터들이 set_work() 또는 is_done()을 호출하고 나서
: : 다시 제어권을 얻는데까지 각각 걸리는 block time이 얼마나 되나요?
: :
: : 전 해당 업종과 관련이 없으니 코드를 봐야만 어떤게 좋은지 판단할 수 있기 때문에..
: : 모터에 작업을 걸고, 끝날때까지의 시간이 아니라, 2가지 함수를 콜하고 되돌려 받기까지 각각의 시간이 궁금합니다.
: :
: : 그리고 LED와 관련된 제어 시간도 알고 싶습니다.
: :
: : phenix 님이 쓰신 글 :
: : : 댓글이 메일로 와서 봤습니다. 마술감자님과 싸우자는 것 아니니 충분히 읽어보고 판단하시길...
: : :
: : : 저는 지난 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 1149 2005/11/15
42478                 음 그런가용 마술감자 995 2005/11/15
42486                     Re:음 그런가용 phenix 880 2005/11/15
42490                         Re:Re:음 그런가용 마술감자 983 2005/11/15
42480                     Re:음 그런가용 크레브 994 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.