2013-10-30 67 views
1

我想使用openMP,並且我有這個功能永遠不能同時運行兩次。在另一個世界中,這不會是一個問題:「關鍵」的整個功能

int foo(void){ 
mutex->lock(); 
.... 
mutex->release(); 
} 

我該如何在OpenMP中實現同樣的功能?

回答

1

用途:

#pragma omp critical (CriticalSection1) 
{ 
    // your stuff here 
} 

編輯

我希望這是更清楚:

int foo(void){ 
    //mutex->lock(); 
#pragma omp critical (CriticalSection_foo) 
    { 
     .... 
    } 
    //mutex->release(); 
} 

EDIT 2

我伸出的例子包括名爲正如評論者所建議的那樣。圓括號是必要的,參見the Intel OMP documentation with an example.

+0

那麼我在哪裏放置int foo(void)部分?在編程之上?在它下面? – Cheiron

+0

根本不是。 「int foo(void)」部分是你的函數聲明。剛編輯我的答案。 – Sven

+2

給關鍵區域命名不是更好嗎?正如我讀「所有未命名的關鍵指令映射到同一個未指定的名稱」。 –