在一般情况下是否可以知道一段代码是否可以并行化并不重要,因为即使您的算法无法检测到所有可以并行化的情况,也可能可以检测到其中的一些情况。
这并不意味着它将有用。考虑以下:
- 首先,要在编译时执行此 *** 作,必须检查您可能要并行化的构造内部可能到达的所有代码路径。除了简单的计算之外,这对于任何其他事情可能都是棘手的。
- 其次,您必须以某种方式决定什么是可并行化的,什么不是并行化的。例如,您不能轻易破坏将同一状态修改为多个线程的循环。这可能是一项非常艰巨的任务,并且在许多情况下,您最终可能不确定-两个变量实际上可能引用同一个对象。
- 即使您可以实现此目标,也最终会使用户感到困惑。很难解释为什么他的代码不可并行化以及应如何更改。
我认为,如果要使用Java实现此功能,则需要将其更多地编写为库,并让用户决定要并行化的内容(库功能和注释?大声思考)。功能语言更适合于此。
琐事:在并行编程过程中,我们必须检查代码并确定代码是否可并行化。我不记得具体细节(有关“至多一次”资产?有人来填补我的心吗?),但是故事的寓意是,即使是看似琐碎的案件,这也极其困难。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)