Was benötige ich und wie kann ich unter Windows Vista Threads in C verwenden?Verwenden von Threads in C unter Windows. Einfaches Beispiel?
Könnten Sie mir bitte ein einfaches Codebeispiel geben?
Was benötige ich und wie kann ich unter Windows Vista Threads in C verwenden?Verwenden von Threads in C unter Windows. Einfaches Beispiel?
Könnten Sie mir bitte ein einfaches Codebeispiel geben?
Hier ist die MSDN sample zur Verwendung von CreateThread() unter Windows.
Die Grundidee ist, dass Sie CreateThread() aufrufen und es einen Zeiger auf Ihre Thread-Funktion übergeben, die auf dem Zielthread ausgeführt wird, sobald es erstellt wird.
Die einfachste Code, es zu tun ist:
#include <windows.h>
DWORD WINAPI ThreadFunc(void* data) {
// Do stuff. This will be the first function called on the new thread.
// When this function returns, the thread goes away. See MSDN for more details.
return 0;
}
int main() {
HANDLE thread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
if (thread) {
// Optionally do stuff, such as wait on the thread.
}
}
Sie haben auch die Möglichkeit, SHCreateThread() -SAMe Grundidee nennen, aber einige Shell-Typ Initialisierung für Sie tun, wenn Sie danach fragen, wie die Initialisierung COM usw.
Beachten Sie jedoch, dass Sie sehr vorsichtig sein müssen, wenn Sie den CRT im neuen Thread verwenden möchten. In MSVC sollten Sie zum Beispiel _beginthread/_beginthreadex und _endthread anstelle der relativen APIs verwenden, damit die CRT die internen pro-Thread-Strukturen korrekt zuordnen/freigeben kann. Ich denke, dass es auch in anderen CRTs irgendwie so gehen sollte. –
Zusätzlich können Sie SHCreateThread() verwenden, wenn Sie möchten, dass COM unter anderem für Sie auf dem neuen Thread initialisiert wird. –
Dies scheint ein C++ - Beispiel (Link) zu sein. Würde das auch für C funktionieren? – Jiminion
Sie würden die CreateThread Funktion verwenden.
Sie erwähnten auch Semaphoren. Dafür würden Sie CreateSemaphore verwenden.
Atomare Operationen und Mutexe sind gut. Ich benutze CreateThread etc, nicht pthreads.
Sind Pthreads verfügbar? unter Windows und/oder Visual Studio? – Jiminion
keine Pthreads sind nicht direkt verfügbar. unter Windows und/oder Visual Studio. Sie können Mingw und Cygwin jedoch verwenden. –
Während dies eine einfache RTFM-Frage sein kann, ist es nicht eine echte Frage. Immerhin gibt es bereits mehrere echte Antworten. –