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
[18514] 클래스내부의 스래드생성에서의 문제점....
수야 [] 925 읽음    2002-05-15 11:55
수야랍니다. ㅡ,.ㅡ

요몇일 고생하구있는게 클래스에 스래드를 추가해서 돌리는짓을 하고있거든요

물론 안되는건 아니지만 디버깅이라던가 기타 대입에서 엄청난 바보같은짓을하는게 있어서

짐 포기단계입니다.

예를 들어서요 ( 수야 전문 한글 코딩 ㅡ0ㅡ 시작합니다 )

class 수야
{
  public:
    __fastcall 수야(){};
    __fastcall ~수야(){};
    void __fastcall 쓰래드돌려();
    HANDLE 쓰래드핸들;
    DWORD  쓰래드핸들ID;
    AnsiString 배열들[];
    int 배열Count;
   
};

이부분이 클래스 해더부분이라치면요

cpp부분은 아래와같습니다.

DWORD WINAPI 쑤래둥(void *쓰래드용수야클래스)
{
  수야 *쓰래드수야;
  쓰래드수야 = (수야)스래드용수야클래스;
 
  for(쓰래드수야->배열Count = 0; 쓰래드수야->배열Count < 100; 쓰래드수야->배열Count++)
  {
    쓰래드수야->배열들[쓰래드수야->배열Count] = 아싸;
  }
}

void __fastcall 수야::쓰래드돌려()
{
  쓰래드핸들 = CreateThread(NULL, 0, 쑤래둥, (void *)this, 0, &쓰래드핸들ID);

  if(쓰래드핸들 == NULL)
    ShowMessage("아거~ 쓰래두 못맹글오쏘~")
}

일케 돌린다그럼여 저 쓰래드에서여

for문에있는 값에서 엄청난 황당함이 일어나더군요

쓰래드수야->배열들[쓰래드수야->배열Count] = 아싸;
라고하면 쓰래드수야->배열들의 쓰래드수야->배열Count번째에 아싸가 들어가야대잖아요?

그런데 ㅡ0ㅡ 쓰래드수야->배열Count에 아싸가 들어갑니다 ㅡ0ㅡ;;

아참 여기서 사용된것이 지금 문자열이랑 정수여서 좀 의문이 가실지모르겠는데요

사실은 아싸는 SOCKET구요 이 SOCKET는 int값으로 받을수 있습니다. 사실상 int값이구요

unix C에서두 int값으로 return받구요 그래서 받아집니다.

이런 황당한 경우가 생기는데요

디버깅 안되는건 기본이구 소스 수정후에도 기존소스대로 디버깅하는 문제하며 ㅡ0ㅡ

이건 이해하겠지만 저문제는 용납이 안되더군요

왜 이런문제점이 발생하는걸까요? ㅡㅡ?

혹시 해보신분.. 주의점이나 알아두어야할것이 있다면 좀 알려주세요~

+ -

관련 글 리스트
18514 클래스내부의 스래드생성에서의 문제점.... 수야 925 2002/05/15
30044     Re:클래스내부의 스래드생성에서의 문제점.... Orun 777 2002/05/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.