!7 module ThreadComparison > DynSingleFunction { int multiplicity = 4; void doIt { print("Benchmarking..."); final long endTime = sysTimePlus(5000); final new L counts; new L threads; repeat multiplicity { final AtomicLong c = addAndReturn(counts, new AtomicLong); threads.add(minPriorityThread(r { while (sysNow() < endTime) incAtomicLong(c) })); } repeat multiplicity { final AtomicLong c = addAndReturn(counts, new AtomicLong); threads.add(maxPriorityThread(r { while (sysNow() < endTime) incAtomicLong(c) })); } joinThreads(threads); for i over threads: print("Count " + (i+1) + " [priority " + threads.get(i).getPriority() + "]: " + counts.get(i)); } visualize { ret northAndCenter(vstackWithSpacing( withLabel("Multiplicity:", liveValueSpinner(dm_fieldLiveValue('multiplicity), 1, 32)), super.visualize()), dm_printLogComponent()); } }