我對Java Threads
相當新,我通常使用C來進行並行化。並行算法具有相同的模式,因爲它遵循的一個:java中的OpenMP任務
void traverse(node* p)
{
if (p->left)
#pragma omp task // p is firstprivate by default
traverse(p->left);
if (p->right)
#pragma omp task // p is firstprivate by default
traverse(p->right);
}
我會使用的openMP
任務指令,例如。
任務描述
當線程遇到任務構造,從 產生的任務相關聯的結構化塊的代碼。遇到的線程 可能會立即執行任務,或推遲執行。在後一種情況下,團隊中的任何線程都可以分配任務。 完成該任務可以使用任務同步 結構來保證。任務構造可嵌套在外部任務內,但內部任務的任務區域不是外部任務的任務區域的一部分。
我的問題是:
我怎麼能實現與Java Threads
此相同的想法(任務)?
萬一你在這件事情好奇,EPCC曾經有過一個研究項目,稱爲[JOMP](http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/index_1的.html)。 JOMP將Java代碼與類似OpenMP的指令(特殊格式的註釋)轉換爲調用到運行時庫中的純Java代碼,後者又使用Java線程。不幸的是,該項目似乎被放棄了(可能是因爲EPCC從Sun切換到Cray),它不支持任務(他們在2008年與OpenMP 3.0一起提供)。 –
@HristoIliev謝謝。雖然,我已經解決了這個問題,但總是歡迎知識。我會看看。 – dreamcrash