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
[27832] 질문]멀티쓰레드에서 바이얼레이션 에러..
초보 [carl] 1144 읽음    2003-11-11 13:48
쓰레드 실행시 함수부분에서 다음과 같이 5개의 쓰레드를 만듭니다
HANDLE hThreads[5]; 
  for(i = 0; i < 5 ; i++) {
      hThreads[i] = (HANDLE) _beginthreadex(NULL,4096,&SecondThreadFunc,(void*)i,CREATE_SUSPENDED,&threadID);
    }

    for(i = 0; i < 5; i++)
      ResumeThread(hThreads[i]);    

    MessageLoop(hThreads,USB_EruStatus.EruMax);

    for(i = 0; i < 5; i++)
      CloseHandle(hThreads[i]);

unsigned __stdcall SecondThreadFunc( void* pArguments )
{

  TFormMain *pOwner = new TFormMain((TComponent*)FormMain );  //여기서부터 에러 발생

  flag = DATATRANSFER;
  outmessage("Thread %2d has an ID if %u\n",(int)pArguments,GetCurrentThreadId());
  pOwner->SCriticSection.Lock();   //크리티칼섹션
  if(pOwner->Command1(flag,(int)pArguments)==PASS){
     ..............
  }

  pOwner->SCriticSection.Unlock();
  _endthreadex( 0 );
  return 0;
}

쓰래드에서 몇번째 쓰래드인지 알고 난뒤.Command1 함수를  실행합니다.
int MessageLoop(HANDLE* lphObiect, int cObject)
{
  while(TRUE)
  {
    DWORD result;
    MSG msg;
    while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
      if(msg.message == WM_QUIT) return 1;
        DispatchMessage(&msg);
    }
    result = MsgWaitForMultipleObjects(cObject,lphObiect,FALSE,INFINITE,QS_ALLINPUT);
    if(result == (WAIT_OBJECT_0 + cObject))
      continue;
    else
      break;   
  }
}

TFormMain *pOwner = new TFormMain((TComponent*)FormMain ) 에서 부터 에러가 발생하는데
크리티컬 섹션 함수를 만들어 Lock 해주거나 아니면 Command1 함수 안에
크리티컬 섹션을 해주어도
Win32 Error 에러가 계속 발생합니다.어떻게 히면 될까여?


이 부분뿐만 아니라..함수 공유를 많이 사용해야 될거 같은데..
어떻게 하면 깔끔하게 해격할수 있을까여?



+ -

관련 글 리스트
27832 질문]멀티쓰레드에서 바이얼레이션 에러.. 초보 1144 2003/11/11
33949     Re:질문]멀티쓰레드에서 바이얼레이션 에러.. 동사 925 2003/11/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.