C 멀티스레드 프로그래밍 교육 정보
Windows NT 및 Windows 9x에서 멀티 스레드 프로그래밍을 위해서는 CreateThread, ResumeThread 등과 같은 일련의 API 함수를 호출해야 하는데 이는 번거롭고 오류가 발생하기 쉽습니다. 우리는 멀티스레드 프로그래밍을 쉽게 구현할 수 있는 Inprise의 차세대 RAD 개발 도구인 C++Builder를 사용합니다. 기존 RAD 도구인 Visual Basic 및 Delphi와 비교할 때 C++Builer는 매우 강력할 뿐만 아니라 프로그래밍 언어가 C++입니다. 시스템 개발 언어가 C인 Windows 시리즈 운영 체제의 경우 다른 프로그래밍 언어에 비해 비교할 수 없는 이점이 있습니다. C++Builder에서 제공하는 TThread 객체를 사용하면 멀티스레드 프로그래밍이 매우 간단하고 사용하기 쉬워집니다. 그렇다면 그것을 달성하는 방법은 무엇입니까? 멀티스레딩의 강력한 기능을 경험할 수 있도록 천천히 알려드리겠습니다.
1. 멀티스레딩 프로그램 만들기:
먼저 멀티스레딩을 구현하는 구체적인 단계를 소개하겠습니다. C++Builder에서 스레드의 개념을 설명하기 위해 Tthread 개체가 사용되었지만 Tthread 개체 자체는 불완전합니다. 스레드 개체를 사용하려면 TThread 아래에 새 하위 클래스를 만들고 Execute 메서드를 오버로드해야 합니다. 이는 C++Builder에서 쉽게 달성할 수 있습니다.
C++Builder IDE 환경에서 File|New 메뉴를 선택하고 New 열에서 Thread Object를 선택한 다음 OK를 누르면 입력 상자가 팝업됩니다. TThread의 MyThread 이름을 입력하세요. C++Builder가 자동으로 TMyThread라는 TThread 하위 클래스를 생성하도록 합니다.
동시에 편집기에는 Unit2.cpp라는 추가 유닛이 있습니다. 이것은 우리가 만든 TMyThread 하위 클래스의 원본 코드입니다.
#include
# pragma hdrstop
p>#include “Unit2.h”
#pragma package(smart_init)
//—————————— ———————————————— ---------
// 중요: VCL에 있는 객체의 메서드와 속성은
/만 가능합니다. / 동기화를 사용하여 호출되는 메서드에 사용됩니다. 예:
//
// 동기화(UpdateCaption)
//
// UpdateCaption은 다음과 같습니다:
//
// void __fastcall MyThread::UpdateCaption()
// {
// Form1-gt; Caption = "스레드에서 업데이트됨"
// }
//--------------- ------
__fastcall MyThread: :MyThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//-------- -------------
void __fastcall MyThread::Execute()
{
//---- 여기에 스레드 코드를 입력하세요 ------
}
//---------- ---------------
Execute() 함수는 스레드에서 구현하려는 작업의 코드가 있는 곳입니다. 원본 코드에 Unit2.cpp를 포함시키면 우리가 생성한 TMyThread 객체를 사용할 수 있습니다. 사용하는 경우에는 TMyThread 객체를 동적으로 생성하고 생성자에서 Resume() 메소드를 사용합니다. 그러면 자체적으로 정의한 새로운 TMyThread 스레드가 프로그램에 추가됩니다. 구체적인 실행 코드는 Execute() 메소드에 의해 오버로드된 코드입니다. 더 많은 스레드를 로드하는 것은 중요하지 않습니다. 필요한 만큼 TMyThread 객체를 계속해서 생성하면 됩니다.