Threating in C++
-
Hallo Forum!
Ich programmiere schon seit längerem in c.
Nun will ich die Möglichkeiten des Threating aus c++ auch in c nutzen und habe die Funktion CreateThread() entdeckt.Klappt soweit super
,allerdings habe ich folgendes Problem:void ThreadFunc (int x) { printf ("x hat den Wert: %d\n"); }Diese Funktion rufe ich dann aus main wie folgt auf:
HANDLE hThread; DWORD dwThreadID; hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, (LPVOID)0, 0, &dwThreadID);Wie kann ich nun an meine Funktion den Wert für x übergeben?

Gruß MM
:schland:
-
LPTHREAD_START_ROUTINE hat diese Signatur:
DWORD (__stdcall *LPTHREAD_START_ROUTINE) ( [in] LPVOID lpThreadParameter );Das Argument ist der vierte Parameter von CreateThread().
MSDN schrieb:
A thread in an executable that calls the C run-time library (CRT) should use the _beginthreadex and _endthreadex functions for thread management rather than CreateThread and ExitThread; this requires the use of the multithreaded version of the CRT. If a thread created using CreateThread calls the CRT, the CRT may terminate the process in low-memory conditions.
-
MasterMind96 schrieb:
Nun will ich die Möglichkeiten des Threating aus c++ auch in c nutzen und habe die Funktion CreateThread() entdeckt.
Erstens heißt es Threading (von Thread), zweitens ist CreateThread eine WinAPI (lies: C)- Funktion, die mit C++ grundsätzlich nichts am Hut hat.
-
Wem willst du denn mit deinem Programm drohen, MasterMind?
http://dict.leo.org/?lp=ende&from=fx3&search=threat
-
Nimm einfach
boost::thread(oderstd::, wenn dein Compiler C++11 unterstützt).
-
-
Danke,
Threading klappt jetzt!c

Gruß MM
:schland:
-
Ich hoffe, du hast jetzt nicht nur Threads zum laufen gebracht, sondern bist dir auch im Klaren, was du synchronisieren musst.
-
und je nachdem, was du machen willst, gefällt dir OpenMP sicherlich viel besser.