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 identifierMöglicherweise werden noch Semaphore notwendig wenn synchronisiert werden muss.