004
30.03.2005, 13:00 Uhr
ao
(Operator)
|
Funktionierendes Beispiel:
C++: |
#include "stdafx.h" #include <iostream> #include <windows.h>
class CWithThread { private: void ThreadProc (void);
public: CWithThread () : m_nCounter (0) {};
static DWORD WINAPI ThreadStarter (LPVOID pvArg);
private: long m_nCounter; };
DWORD WINAPI CWithThread::ThreadStarter (LPVOID pvArg) { CWithThread * pThis = static_cast<CWithThread*> (pvArg); pThis->ThreadProc ();
return 0; }
void CWithThread::ThreadProc (void) { while (1) { std::cout << m_nCounter++; ::Sleep (500); } }
int main(int argc, char* argv[]) {
CWithThread wt;
HANDLE hThread = ::CreateThread ( NULL , 0 , wt.ThreadStarter , &wt , 0 , NULL );
printf("Hello World!\n");
getchar (); return 0; }
|
Ich habs mit CreateThread gemacht und nicht mit _beginthread, weil ich mich damit besser auskenne. Ist aber im Prinzip dasselbe.
Mit Visual Studio 6: Neue Konsolen-Applikation, Typ "Hello World-Application" ohne MFC, und den obigen Quelltext in das CPP-File reinkopieren. Das Programm macht ein Konsolenfenster auf, schreibt einmal "Hello World!" und danach im Halbsekundentakt aufsteigende Zahlen.
Vorsicht: Der Thread wird nicht geregelt runtergefahren, das wäre die nächste Übung. Wenn du das Programm beendest (durch irgendeinen Tastendruck) kann es abstürzen. Starte es sicherheitshalber nur im VC-Debugger.
ao |