// |reftest| skip /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ * Contributor: Jason Orendorff */ //----------------------------------------------------------------------------- var summary = "Create a tree of threads"; var N = 50; // number of threads to create printStatus (summary); function range(start, stop) { var a = []; for (var i = start; i < stop; i++) a.push(i); return a; } function tree(start, stop) { sleep(0.001); if (start >= stop) return []; else if (start + 1 >= stop) return [start]; sleep(0.001); let mid = start + Math.floor((stop - start) / 2); let halves = scatter([function () { return tree(start, mid); }, function () { return tree(mid, stop); }]); sleep(0.001); return Array.prototype.concat.apply([], halves); } var expect; var actual; if (typeof scatter == 'undefined' || typeof sleep == 'undefined') { print('Test skipped. scatter or sleep not defined.'); expect = actual = 'Test skipped.'; } else { expect = range(0, N).toSource(); actual = tree(0, N).toSource(); } reportCompare(expect, actual, summary);