保护对象机制不仅可以用于共享数据,还可以用于同步操作。这里出现了一个模式,它(试图)同步所有任务,并在所有任务都准备好继续进行时释放所有任务。在这里,我们根据等待任务的数量打开条目Synchronize: with Ada.Task_Identification; use Ada.Task_Identification;
with Ada.Text_IO该程序的思想是所有任务在阶段之间重新同步,这样没有任务应该在较晚的阶段工作,而其他任务在较早的阶段仍然忙碌。修复此程序,使其确实显示预期
我想知道JMM是否允许实现重新排序对ai和ada变量的访问,使其行为与代码中显示的意图不同。
基本上,我希望避免锁,并依赖原子和无锁对象。但是,我不知道在这个特定的情况下,我是否还需要隐式同步。void perfomOps(AtomicInteger ai, AtomicDoubleArray ada) {
int i = a
对于Ada程序,我使用的是GNAT FSF编译器。这两个程序都在Windows上运行。我还尝试多次运行每个代码,并对测量的持续时间进行平均,结果相同。我预计会发生两件事,一是我的Ada程序写得不正确(我对这门语言非常陌生),二是它写得很好,但Java编译器正在对我不知道的代码做一些事情。以下是Ada程序:with Ada.Calendar; use Ada.Cal