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
[56394] 쓰레드 오브젝트로 만든 쓰레드를 슬립시키는 법은?
나그네 [kdaek] 1904 읽음    2009-03-11 01:14
Thread.jpg 30.3KB 쓰레드 실행결과
우선 가입인사를 좀 하겠습니다. 예전부터 가입하려고 햇으나 시스템 에러로 가입이 안되서 Q&A에 '나그네'로 질문을 올리던 사람입니다. 혹시나 해서 어제 시도 해봤는데. 가입이 되었습니다. 에러가 고쳐진듯합니다.

질문은 제목과 같습니다.
빌더나 델피이에는 편리하게도 C++ 의 기본 쓰레드(?)를 랩핑한 자바 쓰레드를 닮은 편리한 쓰레드 오브젝트란 클래스가 있죠..
이넘을 돌려서 쓰레드 만들었습니다. 예를 들어서 다음과 같이 코딩을 해서
Unit2.cpp : 쓰레드 클래스 (Unit2.h 는 건드린거 없음)

//---------------------------------------------------------------------------

#include 
#include 
#pragma hdrstop

#include "Unit2.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall ThreadClass::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//---------------------------------------------------------------------------

__fastcall ThreadClass::ThreadClass(bool CreateSuspended)
        : TThread(CreateSuspended)
{
        Priority = tpTimeCritical;
}
//---------------------------------------------------------------------------
void __fastcall ThreadClass::Execute()
{
        //---- Place thread code here ----
        for (int i = 0 ; i < 11 ; i++)
        {
                printf("쓰레드 %d\n",i);
        }
}
//---------------------------------------------------------------------------

Unit1.cpp : 메인 유닛(기본 쓰레드)

#include 
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
        ThreadClass *t = new ThreadClass(false);
        for ( int i = 0 ; i < 11 ; i++)
        {
                printf("메인 %d\n",i);
        }
        delete t;
        scanf(".");
        return 0;
}
//---------------------------------------------------------------------------



이렇게 하고 실행해보면 첨부된 이미지 처럼 나옵니다.
물론 이는 C#이나 자바로 해도 마찬가지겠지요. 그래서 C#이나 자바에서 동시실행의 효과를 주기 위해 아주 잠깐 쓰레드를 아래의 메서드를 이용해서 일시정지시키는데..
C#
Thread.Sleep(1)


Java
try{
Thread.sleep(1);
}catch(InterruptException e){
...
}

C++빌더에 이 sleep 메서드 같은 기능을 하는 함수는 없나요?
원하는 결과는..
쓰레드 0
메인 0
쓰데드 1
메인1
쓰레드 2
메인2
...
...

입니다.

+ -

관련 글 리스트
56394 쓰레드 오브젝트로 만든 쓰레드를 슬립시키는 법은? 나그네 1904 2009/03/11
56395     Win32에서는 Sleep(DWORD dwMilliseconds)라는 API가 제공됩니다. 이경문 1497 2009/03/11
56398         Re:Win32에서는 Sleep(DWORD dwMilliseconds)라는 API가 제공됩니다. 나그네 1677 2009/03/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.