So erstellen Sie Threads in VC ++

8
  • Ich neige dazu, POSIX-Threads zu verwenden, wenn in C programmiert wird, unter Linux .

  • Ohne MFC

Frage:

Wie würde ich dann Threads in VC ++ erstellen?

Finden Sie mehr Informationen zu Threads unter win32?

Bearbeiten:

  • Kurze Illustrationen

Ich liebe stackoverflow - beste Ressource für Studenten!

Grüße

    
Aaron 02.02.2009, 22:37
quelle

7 Antworten

3

Sie sollten die rohe Win32 CreateThread() API nicht verwenden.

Verwenden Sie die _beginthreadex() der C-Laufzeitumgebung, damit die Laufzeitumgebung die Möglichkeit hat, sie einzurichten eigene Thread-Unterstützung.

    
Michael Burr 02.02.2009, 22:49
quelle
10

Wenn Sie nach einer plattformunabhängigen Methode suchen, verwenden Sie boost

gibt es auch beginthread () und begintreadex () Funktionen. Beide scheinen die Win32-API zu ergänzen, in einem Sinn, dass Sie in einigen Anwendungsfällen immer noch einige Win32-Funktionen aufrufen müssen (z. B. CloseHandle für begintreadex). Wenn Sie sich also nicht so sehr für die Plattformkompatibilität interessieren, können Sie auch das Vorspiel abschneiden und CreateThread () verwenden.

Win32-Thread-Behandlung ist hier dokumentiert: Ссылка

[edit1] Beispiel:

%Vor%

[edit2] CRT & amp; CreateThread ():

pro MSDN:

Ein Thread in einer ausführbaren Datei, die die C-Laufzeitbibliothek (CRT) aufruft, sollte die Funktionen _beginthreadex und _endthreadex für die Threadverwaltung anstelle von CreateThread und ExitThread verwenden. Dies erfordert die Verwendung der Multi-Thread-Version des CRT. Wenn ein mit CreateThread erstellter Thread den CRT aufruft, kann der CRT den Prozess unter wenig Arbeitsspeicher beenden.

    
galets 02.02.2009 22:47
quelle
3

Sie können entweder die CRT-Funktion _beginthreadex () oder die Windows-API-Funktion CreateThread () verwenden. _beginthreadex () ist für frühe Versionen von VC ++ erforderlich, die über eine CRT verfügen, die threadlokalen Speicher nicht initialisiert hat. CreateThread () ist in mindestens VS2005 und höher in Ordnung.

    
Hans Passant 02.02.2009 22:50
quelle
2

Sie möchten wahrscheinlich einen Blick auf die CreateThread () werfen Funktion.

    
Andy 02.02.2009 22:45
quelle
1

Verwenden Sie _beginthread() oder _beginthreadex() , um einen neuen Thread zu erstellen. Verwenden Sie nicht die Win32-Funktion CreateThread() - die Multithread-Aspekte der C-Laufzeit werden nicht ordnungsgemäß initialisiert. Siehe auch diese Frage .

    
Adam Rosenfield 02.02.2009 22:48
quelle
1

Einige gute Bücher zu diesem Thema sind Petzolds Programmierfenster und Richters Programmieranwendungen für Windows. Insbesondere letzteres geht in serverseitige Programmierung wie Thread und Synchronisation APIs in einer Menge Tiefe.

BEARBEITEN: Für Code-Snippets ist Google Ihr Freund. Zum Beispiel Dieser Artikel enthält einige minimale Thread-Beispiele.

    
quelle
0

Es gibt auch die Funktion _beginthread () , die Sie nachschlagen können . Es unterscheidet sich ein wenig von CreateThread (), Sie sollten sich der Unterschiede bewusst sein, bevor Sie eine auswählen.

    
Philibert Perusse 02.02.2009 22:49
quelle

Tags und Links