2015-06-03 50 views
1

我在OpenMP中遇到問題。有兩個功能應該並行執行。在foo()有一個循環,將被stop中斷。正如你所看到的,它被分配在另一個OMP部分。OpenMP:並行部分是否有超時?

的代碼是:

char stop; 
#pragma omp parallel 
{ 
    #pragma omp sections 
    { 
     #pragma omp section 
     { 
      foo(&stop); 
     } 
     #pragma omp section 
     { 
      bar(); 
      stop = getch(); 
     } 
    } 
} 

void foo(char *foo) 
{ 
    while(*stop != 'q') 
    { 
     // do stuff 
    } 
} 

現在,當我執行該代碼會發生什麼:它被卡在第一(foo())部分。在給定的循環中更具體 - 現在是一個無限循環,因爲它永遠不會切換到bar部分,所以不能調整中斷條件。

現在一個簡單的方法就是超時foo()部分。我搜索了互聯網,但找不到任何可應用的代碼。

有沒有人有想法?

感謝您的任何建議!

+0

爲什麼不向while循環添加定時條件? –

+0

源文件存儲在.dll中 – user3085931

+0

意思是說你有一個不能更改的庫? –

回答

1

OpenMP:是否有平行部分超時?

答案:

OpenMP沒有超時。

+0

謝謝我正在尋找一種方法。 – user3085931