我有一個簡單的程序,它使用openMP運行4個線程,可以讀取4個不同的文本文件並查找字符。我只是想弄清楚爲什麼報告的最後一個線程顯示線程數爲26478 ......我無法弄清楚。函數countAnagrams對tid沒有任何作用,只是在函數完成運行時將它打印到屏幕上。OpenMP沒有顯示正確的線程號 - C
下面是我的代碼和輸出。任何幫助將不勝感激。
#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);}
}
}
}
輸出:
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
請勿張貼文字的照片。改爲發佈實際文字。 –
線程號碼是一種id,而不是實際的號碼。從輸出看來,好像有四個線程在運行。 – deamentiaemundi
我會記得下一次約翰,謝謝 – drewfiss90