Probleme mit CreateThread ()



  • Hi, ich hab gestern schon geschrieben, weil ich ein Problem mit einem Primzahlenerkennungsprogramm hatte, nun läuft es soweit... Es soll nun aber auf 2 bzw 3 Threads aufgeteilt werden... und zwar soll das Programm jeweils 100 Überprüfungen pro Thread laufen lassen... Jetzt meine Frage wie funktioniert das mit den Threads ..? Hat jmd. nen heißen Tipp für mich?

    vielen dank im voraus

    #include <stdio.h>
    
    int main()
    
    {
        int eingabe,k,hilf,pruef;
        eingabe=einles();
        int ergebnis=0;
        for( k = 2; k<=eingabe;k++)
        {
            hilf = prim(k);
            ergebnis = ergebnis + hilf;
        }         
    
        pruef=ergebnis%100;
    
        printf(" %i \n ", ergebnis);
    
        if (pruef<10&&pruef>0){
        printf(" 0%i ist die Pruefsumme!\n");
                     }            
        else{                 
        printf(" %i ist die Pruefsumme!\n ", pruef);
            }    
        perror(NULL);    
        system("pause");
    
    }
    
    int einles()
        {
        int grenze; 
        printf("Bitte Obergrenze eingeben: ");              
        scanf("%d", &grenze);
             if (grenze>5000)  {
            printf("Der Obergrenze liegt bei max. 5000!");    
                               }
            else{
            return grenze;
                }
    
        }               
    
    int prim(int startWert)
    {
        int i;                                                     
    
        for (i = 2;                                          
             i < startWert && startWert % i != 0;           
             i++);                                         
        if (i == startWert){                               
    
         	return startWert;
                           } 
    	else{
    	    return 0;
            } 
    
    }
    


  • Threads sind eine schöne Sache, aber deine Primzahlfunktion musst du noch anders schreiben, damit Threads sinnvoll zum Einsatz kommen können. Wenn du erst mal soweit bist, kannst du einen neuen Thread angenehm erzeugen:

    namespace
    {
    
        static void Foo() // Mach etwas...
        {
            // ...
        }
    
    }
    
    int main()
    {
        using namespace System::Threading;
        Thread
    #ifdef __cplusplus_cli
        ^
    #else
    #define gcnew __gc new
        __gc *
    #endif
        Function = gcnew Thread(gcnew ThreadStart(&::Foo));
        Function->Start();
        // Ab hier läuft die andere Funktion im Hintergrund.
        Function->Join(); // ...warten, bis die Funktion fertig ist...
        return 0;
    #ifdef gcnew
    #undef gcnew
    #endif
    }
    


  • Omg, warum wird jetzt das #define in meinem Code nicht eingefärbt?? 😮


Anmelden zum Antworten