glassfiber
Advanced tools
Comparing version 1.0.9 to 1.0.10
@@ -33,10 +33,7 @@ /** @license | ||
function /** * */ runnext(/** * */ spawnpromise) | ||
{ var /** number */ prio; | ||
for (prio = 0; prio < runqueue.length; prio++) | ||
{ let /** function():void */ resolvethread = runqueue[prio].shift(); | ||
{ var /** !Array */ currunqueue; | ||
for (currunqueue of runqueue) | ||
{ let /** function():void */ resolvethread = currunqueue.shift(); | ||
if (resolvethread) | ||
{ // Tight interpreter scheduling | ||
// resolvethread(); | ||
// Loose interpreter scheduling | ||
setTimeout(resolvethread); | ||
{ resolvethread(); | ||
break; | ||
@@ -43,0 +40,0 @@ } |
@@ -40,10 +40,7 @@ /** @license | ||
function /** * */ runnext(/** * */ spawnpromise) | ||
{ var /** number */ prio; | ||
for (prio = 0; prio < runqueue.length; prio++) | ||
{ let /** function():void */ resolvethread = runqueue[prio].shift(); | ||
{ var /** !Array */ currunqueue; | ||
for (currunqueue of runqueue) | ||
{ let /** function():void */ resolvethread = currunqueue.shift(); | ||
if (resolvethread) | ||
{ // Tight interpreter scheduling | ||
// resolvethread(); | ||
// Loose interpreter scheduling | ||
setTimeout(resolvethread); | ||
{ resolvethread(); | ||
break; | ||
@@ -50,0 +47,0 @@ } |
@@ -9,3 +9,3 @@ (function(){"use strict"; | ||
*/ | ||
'use strict';(()=>{function c(b){var a;for(a=0;a<d.length;a++){let f=d[a].shift();if(f){setTimeout(f);break}}return b}const g=Object,e={yield:function(b){return c(new Promise(a=>d[b||0].push(a)))},sleep:function(b){return c(new Promise(a=>setTimeout(()=>a(),b)))},spawn:function(b){return b.then(c)}},d=[[],[],[],[]];"function"==typeof define&&define.amd?define("glassfiber",e):"object"==typeof exports?g.assign(exports,e):window.Glassfiber=e}).call(this); | ||
'use strict';(()=>{function c(a){for(var b of e){let f=b.shift();if(f){f();break}}return a}const g=Object,d={yield:function(a){return c(new Promise(b=>e[a||0].push(b)))},sleep:function(a){return c(new Promise(b=>setTimeout(()=>b(),a)))},spawn:function(a){return a.then(c)}},e=[[],[],[],[]];"function"==typeof define&&define.amd?define("glassfiber",d):"object"==typeof exports?g.assign(exports,d):window.Glassfiber=d}).call(this); | ||
}).call(this); |
{ | ||
"name": "glassfiber", | ||
"version": "1.0.9", | ||
"version": "1.0.10", | ||
"description": "Co-routines implemented using Promises", | ||
@@ -5,0 +5,0 @@ "main": "glassfiber.min.js", |
18
t.js
var Glassfiber = require("./glassfiber.min.js"); | ||
var resurp; | ||
var unreppromise = new Promise((res) => resurp = res); | ||
async function threadA(a, b) { | ||
console.log("A starting"); | ||
await Glassfiber.yield(); | ||
await unreppromise; | ||
console.log(a); | ||
@@ -37,8 +41,20 @@ await Glassfiber.sleep(1000); | ||
async function main() { | ||
/* | ||
var p1 = Glassfiber.spawn( threadA(12, 13) ); | ||
var p2 = Glassfiber.spawn( threadB(14, 15, 16) ); | ||
var p3 = Glassfiber.spawn( threadC(17) ); | ||
await Promise.all([p1, p2, p3]); | ||
*/ | ||
//await Promise.all([p1, p2, p3]); | ||
} | ||
main(); | ||
Glassfiber.spawn( threadA(12, 13) ); | ||
Glassfiber.spawn( threadB(14, 15, 16) ); | ||
Glassfiber.spawn( threadC(17) ); | ||
global.gc(); | ||
console.log("Resurp 44"); | ||
resurp(44); | ||
console.log("Final 44"); | ||
global.gc(); | ||
console.log("Final 44 gced"); |
Sorry, the diff of this file is not supported yet
182
18404