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
[61601] Re:Re:Re:장비 프로그램 작성중 동기화 관련 질문..
Lyn [tohnokanna] 1087 읽음    2010-06-18 10:27
어떤 컴파일러든 멀티쓰래드를 디버깅 하긴 힘듭니다...

가장 문제가 되는건.... 디버깅걸면 나오던버그가 안나오고 안나오던 버그가 나오고 하는거죠 =_=a 흐름이 바뀌어버리니까.

바보 님이 쓰신 글 :
: 답변에 감사 감사 감사..   드립니다.
:
: 제가  출장이 있어서 ...  한가지 궁금한 점이 있습니다.
:
: 멀티스레드 프로그램은 디비깅모드로 보면서 동작하는게 힘든가요 ?
:
: c++ 빌더만 그런 것인지 다른 모든 컴파일러가 그런 것인가요  ? 
:
: 그럼 디버딩을 쓰레드 한개 한개 돌리고   그런 식으로 해야 하나요 ?
:
: 디버딩 모드에서 돌리지 않고 프로그램을 짜다는 것은 너무 ..
:
: 힘들지 않을까요 ?
:
:
:
: 크레브 님이 쓰신 글 :
: : 아래 땅주인님의 얘기가 일반 적으로 맞고요
: : 원래 경험이 없으면 너무 단순하게 생각하거나 너무 복잡하게 생각하는 문제가 발생합니다.
: : 나중에 경험이 쌓이고 보면 참 괜한 걱정을 했다는 생각이 들게 마련이죠
: :
: : 일단 멀티 쓰레드 에서 공유하는 자원은 글로벌 객체, 또는 데이터로 만들어 두시고
: : 그 자원이 정말로 Critical 하게 싱크를 맞추어야 하는 경우라고 생각되는 부분만
: : CriticalSection으로 막으면 됩니다. 그래서 CriticalSection이 있는거니까요
: : 물론 다른 프로세스와도 공유하는 자원이라면 ( 그럴일은 거의 없지만)
: : 메시지 처리나 Event나 뮤텍스를 사용하는 방법도 생각해 봐야 합니다.
: :
: : 복잡하게 메시지 처리 까지 생각할 필요 없습니다.
: :
: : TList 를 사용하는데 여러 쓰레드에서 공유해야 하는 데이터라면
: : TThreadList 라도 클래스를 쓰면됩니다. 내부적으로 Lock 기능이 포함되 있죠
: :
: : 화면에 업데이트(Display) 해야 하는 데이터가 있을때 내가 주로 쓰는 방법은
: : 쓰레드에서는 데이터 변수에만 써주고
: : 화면에 표시는 타이머에서 해주고 있습니다.
: : 대충 100~200 msec 타이머 쓰면 부하도 거의 안걸리고 실시간으로 표시되는것으로 보입니다.
: :
: : 멀티 쓰레드 프로젝트에서 디버깅을 돌리는것 경험상 거의 자살 행위로 보입니다.
: : 최근 C++Builder 2010에서는 좀 나아지긴 했지만..
: : 그렇지 않아도 불안정한 디버깅 모드에서 멀티쓰레드 디버깅까지 한다는것은 좀 비추입니다.
: :
: : 한가지 더 말씀드리면..
: : 디버깅을 쓴다는것은 장비 PC에 C++빌더를 설치해서 디버깅하면서 돌리겠다는것인데.
: : 별로 좋은 습관이 아닙니다.
: : 장비가 라인 들어가면 양산을 타게되고
: : 그럴때도 장비 PC에서 빌더로 디버깅하면서 돌린다는것은 좀 없어보입니다.
: : 기본적으로 문제 생기는 것은 자기 소스에서 다 분석해서 해결해야 하고
: : 굳이 디버깅 정보가 필요하다면
: : 로그 데이터를 남길 수 있는 구조를 만드시는게 좋습니다.
: :
: : 참고할만한 서적은 찾아보셨겠지만.. 전혀 없고요
: : 열심히 맨땅에 헤딩하다보면 깨우치는 것도 있겠고
: : 이끌어 줄 사람이 있으면 더 빠르거야 당연하고요
: : 어떤 일이든지...
: : 쉽게 배우면 나중에 꼭 함정에 빠져서 댓가를 치루게  마련입니다.
: :
: : 대충 생각나는대로 말씀드렸는데.. 좀 도움이 되실런지 모르겠네요
: :
: :
: : 바보 님이 쓰신 글 :
: : : 프로그램 작성중 여러가지 문제가 발생.. 몇가지 질문.
: : :
: : : thread 클래스를 상속받아서 작업용 클래스를 만들고
: : :
: : : Execute 에서 쓰레드가 실행된다 는 것은 이해 했는데..
: : :
: : : 이런 쓰레드 4개 정도 만들어서 돌리고 있는데
: : :
: : : 디버깅 포인터를 걸면 컴파일러가 멈추는 현상이 있습니다.
: : :
: : : 아마  동기화 때문에 그런거 같은데
: : :
: : : 지금 동기화 처리 한것.
: : :
: : : 쓰레드에서 UI을 건들면 안된다 -> 메세지 로 처리해서 메인폼으로 메세지를 보내고 있습니다.
: : :
: : : 1)  쓰레드에서 다른 쓰레드의 멤버 변수를 알고 싶은 경우도 메세지로 처리해야 되냐요 ?
: : :
: : : 지금은 그냥 읽어 옴.
: : :
: : : 그런대 위의 작업용  클래스에  멤버 함수와 멤버 변수를  다른 폼이나 참조 실행하면
: : :
: : : 문제가 되는 같습니다 . 
: : :
: : : 클래스가 디버깅 포인트로 멈추면 다른 곳에서 그 쓰래드의 변수를 참조 하려할때.
: : :
: : : 같이 대기 하면서 문제가 되는 같은데 ?
: : :
: : : 궁금한것은..
: : :
: : : Execute 함수 실행 하는 곳에서는 다른 쓰레드 함수의 멤버 함수나 멤버 변수를 참조
: : :
: : : 읽어 오는 것도 안되는 것인가요 ?
: : :
: : : 또 Execute 에서 실행되지 않는  함수나 변수도 참조 하면 안되는 것인가요 ?
: : :
: : : 동기화라는 것이 변수를 변경할때 문제가 되는 것안가요 ?
: : :
: : : 지금 현상을 보면  쓰레드에서 동시 실행되는 로직만 넣어 두고
: : :
: : : 변수나 참고 해야 하는 값은 다른 곳에서 처리하고  쓰레드에 어떤 값을 전달 하려면 전부 메세지로 처리해야
: : :
: : : 한다는 결론  ?
: : :
: : : 쓰레드에 대해서 아는 것이 별로 없으니 ..이런 문제가 ...
: : :
: : : 혹시 참고 할만한 서적은 ?
: : :
: : : 혹시 아시분 ?

+ -

관련 글 리스트
61580 장비 프로그램 작성중 동기화 관련 질문.. 바보 997 2010/06/17
61596     Re:장비 프로그램 작성중 동기화 관련 질문.. 크레브 1125 2010/06/17
61600         Re:Re:장비 프로그램 작성중 동기화 관련 질문.. 바보 1014 2010/06/18
61603             Re:Re:Re:장비 프로그램 작성중 동기화 관련 질문.. 크레브 1047 2010/06/18
61608                 Re:Re:Re:Re:장비 프로그램 작성중 동기화 관련 질문.. 답변주신분들 전부 감사드립니다. 바보 1069 2010/06/18
61601             Re:Re:Re:장비 프로그램 작성중 동기화 관련 질문.. Lyn 1087 2010/06/18
61586     Re:장비 프로그램 작성중 동기화 관련 질문.. 땅주인 1155 2010/06/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.