Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
|
|
@ -0,0 +1,47 @@
|
|||
class Latch {
|
||||
constructor(limit) {
|
||||
this.semafor = limit;
|
||||
this.lock = new Promise(resolve => {
|
||||
this.resolve = resolve;
|
||||
});
|
||||
}
|
||||
|
||||
wait() {
|
||||
this.semafor--;
|
||||
if (this.semafor === 0) {
|
||||
this.resolve();
|
||||
}
|
||||
return this.lock;
|
||||
}
|
||||
}
|
||||
|
||||
class Worker {
|
||||
static async doWork(howLong, barrier, name) {
|
||||
await new Promise(resolve => setTimeout(resolve, howLong));
|
||||
console.log(`Worker ${name} finished work`);
|
||||
await barrier.wait();
|
||||
console.log(`Worker ${name} finished assembly`);
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const latch = new Latch(5);
|
||||
|
||||
// Random number generator function
|
||||
const getRandomInt = (min, max) => {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
};
|
||||
|
||||
const promises = [
|
||||
Worker.doWork(getRandomInt(300, 3000), latch, "John"),
|
||||
Worker.doWork(getRandomInt(300, 3000), latch, "Henry"),
|
||||
Worker.doWork(getRandomInt(300, 3000), latch, "Smith"),
|
||||
Worker.doWork(getRandomInt(300, 3000), latch, "Jane"),
|
||||
Worker.doWork(getRandomInt(300, 3000), latch, "Mary")
|
||||
];
|
||||
|
||||
await Promise.all(promises);
|
||||
console.log("Assembly is finished");
|
||||
}
|
||||
|
||||
main();
|
||||
Loading…
Add table
Add a link
Reference in a new issue