1 Pluspunkt 0 Minuspunkte

Ich habe dieses Programm.

#include <stdio.h>

void test() {

    int i = 0;
    
    while(i < 10000) {
    
        i++;
    
    }
    
    printf("\n-> %d <-\n", i);

}

int main() {

    test();
    
    return 1;

}

Wie kann ich die Funktion test() auf einem eigenen Thread laufen lassen?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Eine Möglichkeit ist die Verwendung der Windows API mit der Header Datei windows.h.

#include <stdio.h>
#include <windows.h>

DWORD WINAPI test(LPVOID param) {
    int i = 0;
    
    while(i < 10000) {
        i++;
    }
    
    printf("\n-> %d <-\n", i);
    
    return 0;
}

int main() {
    HANDLE thread;
    
    thread = CreateThread(NULL, 0, test, NULL, 0, NULL);
    if (thread == NULL) {
        fprintf(stderr, "Fehler beim Erstellen des Threads\n");
        return 1;
    }
    
    WaitForSingleObject(thread, INFINITE);
    CloseHandle(thread);
    
    return 0;
}
von (706 Punkte)  
0 Pluspunkte 0 Minuspunkte

Das pthreads-win32 Projekt stellt eine Portierung der POSIX Thread-API für Windows bereit, was es ermöglicht, plattformübergreifenden Code zu schreiben, der Threads sowohl auf Windows als auch auf Unix-ähnlichen Systemen verwenden kann.

#include <stdio.h>
#include <pthread.h>

void *test(void *arg) {
    int i = 0;
    
    while(i < 10000) {
        i++;
    }
    
    printf("\n-> %d <-\n", i);
    
    return NULL;
}

int main() {
    pthread_t thread;
    
    if (pthread_create(&thread, NULL, test, NULL)) {
        fprintf(stderr, "Fehler beim Erstellen des Threads\n");
        return 1;
    }
    
    // Warte auf das Beenden des Threads
    pthread_join(thread, NULL);
    
    return 0;
}

von (716 Punkte)