Skip to content

Commit 3ff259c

Browse files
committed
Remove unneeded callback
1 parent 830de01 commit 3ff259c

1 file changed

Lines changed: 9 additions & 16 deletions

File tree

JavaScript/6-counting-safe.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,10 @@ class CountingSemaphore {
1212
}
1313
}
1414

15-
enter(callback) {
15+
enter() {
1616
Atomics.wait(this.counter, 0, 0);
1717
const prev = Atomics.sub(this.counter, 0, 1);
18-
if (prev > 0) {
19-
setTimeout(callback, 0);
20-
} else {
21-
this.leave();
22-
setTimeout(() => {
23-
this.enter(callback);
24-
}, 0);
25-
}
18+
if (prev === 0) this.leave();
2619
}
2720

2821
leave() {
@@ -35,7 +28,8 @@ class CountingSemaphore {
3528

3629
if (isMainThread) {
3730
const buffer = new SharedArrayBuffer(4);
38-
const semaphore = new CountingSemaphore(buffer, 0, 2);
31+
// Try to change 10 to 2 at next lene to check solution
32+
const semaphore = new CountingSemaphore(buffer, 0, 10);
3933
console.dir({ semaphore: semaphore.counter[0] });
4034
for (let i = 0; i < 20; i++) {
4135
new Worker(__filename, { workerData: buffer });
@@ -47,12 +41,11 @@ if (isMainThread) {
4741
const file = `file-${threadId}.dat`;
4842
console.dir({ threadId, semaphore: semaphore.counter[0] });
4943

50-
semaphore.enter(() => {
51-
const data = `Data from ${threadId}`.repeat(REPEAT_COUNT);
52-
fs.writeFile(file, data, () => {
53-
fs.unlink(file, () => {
54-
semaphore.leave();
55-
});
44+
semaphore.enter();
45+
const data = `Data from ${threadId}`.repeat(REPEAT_COUNT);
46+
fs.writeFile(file, data, () => {
47+
fs.unlink(file, () => {
48+
semaphore.leave();
5649
});
5750
});
5851
}

0 commit comments

Comments
 (0)