Ich habe ein einfaches Programm, das OpenMP verwendet, um 4 Threads auszuführen, die in 4 verschiedenen Textdateien lesen und Anagramme finden. Ich versuche nur herauszufinden, warum der letzte Thread, der gemeldet wird, eine Thread-Nummer von 26478 zeigt ... ich kann es nicht genau herausfinden. Die Funktion countAnAngrams tut nichts mit tid, sondern druckt sie nur auf den Bildschirm, wenn die Funktion beendet ist.OpenMP nicht korrekte Thread-Nummer anzeigen - C
Unten ist mein Code und der Ausgang. Jede Hilfe würde sehr geschätzt werden.
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void countAnagrams(char* fileName, int threadNum);
void main()
{
char *fileNames[] = {"AnagramA.txt","AnagramB.txt","AnagramC.txt","AnagramD.txt"};
int i;
int tid;
int nthreads = 4;
omp_set_num_threads(nthreads);
#pragma omp parallel
{
#pragma omp sections
{
#pragma omp section
{tid = omp_get_thread_num();
countAnagrams(fileNames[0], tid);}
#pragma omp section
{tid = omp_get_thread_num();
countAnagrams(fileNames[1], tid);}
#pragma omp section
{tid = omp_get_thread_num();
countAnagrams(fileNames[2], tid);}
#pragma omp section
{tid = omp_get_thread_num();
countAnagrams(fileNames[3], tid);}
}
}
}
Ausgang:
Filename: AnagramD.txt
Hello from thread: 1
Number of anagrams: 286
Longest anagram: 8
Filename: AnagramB.txt
Hello from thread: 0
Number of anagrams: 1148
Longest anagram: 8
Filename: AnagramC.txt
Hello from thread: 2
Number of anagrams: 5002
Longest anagram: 8
Filename: AnagramA.txt
Hello from thread: 26478
Number of anagrams: 3184
Longest anagram: 8
Sie nicht Bilder von Text schreiben. Veröffentlichen Sie stattdessen den eigentlichen Text. –
Die Thread-Nummer ist eine Art ID, nicht die tatsächliche Nummer. Und von der Ausgabe scheint es, als ob vier Threads laufen würden. – deamentiaemundi
Ich werde mich daran erinnern, dass für das nächste Mal John, danke – drewfiss90