|
|
@ -80,34 +80,41 @@ Function.prototype.toString = function () { |
|
|
|
const MAX_ENVS = 10; |
|
|
|
const MAX_ENVS = 10; |
|
|
|
let drpyEnvS = globalMap0.getVar('drpyEnvS',{}); |
|
|
|
let drpyEnvS = globalMap0.getVar('drpyEnvS',{}); |
|
|
|
let nextEnvId = 0; |
|
|
|
let nextEnvId = 0; |
|
|
|
|
|
|
|
let lock = false; |
|
|
|
|
|
|
|
|
|
|
|
function createOrGetEnvironment(id, ext) { |
|
|
|
function createOrGetEnvironment(id, ext) { |
|
|
|
|
|
|
|
while (lock) { |
|
|
|
if (id === undefined) { |
|
|
|
// 等待锁释放
|
|
|
|
id = nextEnvId++; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
lock = true; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
if (id === undefined) { |
|
|
|
|
|
|
|
id = nextEnvId++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (drpyEnvS[id]) { |
|
|
|
if (drpyEnvS[id]) { |
|
|
|
log(id+'>drpy取缓存'); |
|
|
|
log(id+'>drpy取缓存'); |
|
|
|
return drpyEnvS[id]; |
|
|
|
return drpyEnvS[id]; |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
log(id+'>drpy初始化'); |
|
|
|
log(id+'>drpy初始化'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (Object.keys(drpyEnvS).length >= MAX_ENVS) { |
|
|
|
if (Object.keys(drpyEnvS).length >= MAX_ENVS) { |
|
|
|
const oldestId = Object.keys(drpyEnvS).sort((a, b) => a - b)[0]; |
|
|
|
const oldestId = Object.keys(drpyEnvS).sort((a, b) => a - b)[0]; |
|
|
|
log(oldestId+'>drpy删除'); |
|
|
|
log(oldestId+'>drpy删除'); |
|
|
|
delete drpyEnvS[oldestId]; |
|
|
|
delete drpyEnvS[oldestId]; |
|
|
|
//globalMap0.putVar('drpyEnvS', drpyEnvS);
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drpyEnvS[id] = (function() { |
|
|
|
drpyEnvS[id] = (function() { |
|
|
|
let drpy2 = $.require(module.modulePath.slice(0, module.modulePath.lastIndexOf("/")) +'/drpy/drpy2.js'); |
|
|
|
let drpy2 = $.require(module.modulePath.slice(0, module.modulePath.lastIndexOf("/")) +'/drpy/drpy2.js'); |
|
|
|
return drpy2.DRPY(); |
|
|
|
return drpy2.DRPY(); |
|
|
|
})(); |
|
|
|
})(); |
|
|
|
drpyEnvS[id].init(ext); |
|
|
|
drpyEnvS[id].init(ext); |
|
|
|
//globalMap0.putVar('drpyEnvS', drpyEnvS);
|
|
|
|
globalMap0.putVar('drpyEnvS', drpyEnvS); |
|
|
|
return drpyEnvS[id]; |
|
|
|
return drpyEnvS[id]; |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
lock = false; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
log(Object.keys(drpyEnvS).length); |
|
|
|
log(Object.keys(drpyEnvS).length); |
|
|
|
$.exports = { |
|
|
|
$.exports = { |
|
|
|