Ich habe ein Programm erstellt, um einige Zahlen für ein Schulprojekt zu berechnen. Angenommen, ich habe 10 Threads, aber 42 Elemente, die verarbeitet werden sollen. Ich möchte, dass sie alle Elemente gleichmäßig verarbeiten und eine gleich große Anzahl von Jobs übernehmen. Ich benutze die POSIX Pthread-Bibliothek, ich weiß, dass es etwas mit Mutex zu tun hat, aber ich bin mir nicht ganz sicher.Arbeit zwischen Fäden aufteilen? (pthread)
Hier ist ein vereinfachtes Beispiel für das, was ich mache, aber ich möchte die Arbeitsbelastung gleichmäßig ausgleichen.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int numbers = { 1, 78, 19, 49, 14, 1, 14. 19, 57, 15, 95, 19, 591, 591 };
void* method() {
for(size_t i = 0; i < 14; i++) {
printf("%d\n", (numbers[i] * 2));
}
}
int main(int argc, char const *argv[]) {
pthread_t th[10];
for (size_t i = 0; i < 10; i++) {
pthread_create(&th[i], NULL, method, NULL);
}
return 0;
}
Dies hängt möglicherweise auch von der Art des Prozesses und _items_ ab, die Sie verarbeiten müssen. Stellen Sie in jedem Fall sicher, dass Sie die Zeiger als Argumente für die Argumente korrekt erstellen und übergeben - Argument Nr. 4 an 'pthread_create()'. – user3078414