gpt4 book ai didi

java - Java 中的 OpenMP 任务

转载 作者:行者123 更新时间:2023-11-30 11:39:15 30 4
gpt4 key购买 nike

我是 Java 线程 的新手,我通常使用 C 来进行并行化。并行化与其遵循的模式具有相同模式的算法:

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 的任务指令。

任务描述

When a thread encounters a task construct, a task is generated from the code for the associated structured block. The encountering thread may immediately execute the task, or defer its execution. In the latter case, any thread in the team may be assigned the task. Completion of the task can be guaranteed using task synchronization constructs. A task construct may be nested inside an outer task, but the task region of the inner task is not a part of the task region of the outer task.

我的问题是:

如何使用 Java 线程 实现相同的想法(任务)?

最佳答案

OpenMP 的编译指示确实让并行化变得更容易一些。

在 Java 中,您首先需要创建一个实现 Runnable 的类。
- 示例:public Class Traverse 实现 Runnable

然后您只需创建类并调用“运行”来启动线程。

private void traverse(node p) 
{
Traverse t = null;

if (p.left)
t = new Traverse(p.left);
if (p->right)
t = new Traverse(p.right)

t.run(); // start thread. this call will not wait for run to finishes
}

关于java - Java 中的 OpenMP 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353289/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com