2010-08-03 72 views
3

我正在考慮在C++中使用OpenMP進行多線程。但我想知道是否有辦法告訴線程不要等待其他併發線程並繼續執行我的程序? (也許我可以取消/殺死其他線程?)如何不等待OpenMP中的其他線程?

我知道「nowait」子句的存在,但我想要「等待」或「不等待」的決定動態完成(程序將根據我正在做的過程的結果決定)。

我希望我能在這方面得到一些建議。

在此先感謝。

回答

1

我會做沿着

if(conditon) 
{ 
    taskA_with_Barriers(); 
} 
else 
{ 
    taskA_without_Barrier(); 
} 

condtion需要的東西線是通過了所有的線程相同的常數。

如果您需要取消線程,您可能會使用錯誤的技術。可能還想看看pthreadsMPI

+1

@ nacho4d如果您使用C++,使用boost線程更有意義。 OpenMP可能會限制你的工作 – Anycorn 2010-08-04 00:51:48