Code multithreaded machen



  • Hallo,

    ich habe momentan einen Algorithmus der Gestalt

    for (int i = 0; i < max; ++i)
    {
      Sammle Daten abhängig von i;
    }
    Bearbeite Daten;
    

    Jetzt wollte ich die Schleife multithreaded machen:

    for (int i = 0; i < NumberOfThreads; ++i)
    {
      Starte Thread mit Datum i;
    }
    Wenn vector bestimmte Größe erreicht hat, bearbeite Daten;
    Wenn erfolgreich, beende Threads, sonst lasse die Threads weiterlaufen;
    
    class CalculationThread
    {
      Berechne und füge Daten in einen Vector ein;
    }
    

    Wie würde ich das Grundgerüst mit der WinAPI (oder besser mit boost?) programmieren?



  • Im Platform SDK findet sich ein Beispiel zu CreateThread()

    Auszug:

    PMYDATA pData;
        DWORD dwThreadId[MAX_THREADS];
        HANDLE hThread[MAX_THREADS]; 
        int i;
    
        // Create MAX_THREADS worker threads.
    
        for( i=0; i<MAX_THREADS; i++ )
        {
    
         ...
    
        hThread[i] = CreateThread( 
                NULL,              // default security attributes
                0,                 // use default stack size  
                ThreadProc,        // thread function 
                pData,             // argument to thread function 
                0,                 // use default creation flags 
                &dwThreadId[i]);   // returns the thread identifier
    

    Möglicherweise werden noch Semaphore notwendig wenn synchronisiert werden muss.


Anmelden zum Antworten