Skip to content

Instantly share code, notes, and snippets.

@ErickWendel
Last active December 19, 2024 16:26
Show Gist options
  • Save ErickWendel/59aa568e09aff06a90c0a71bbef5c6e5 to your computer and use it in GitHub Desktop.
Save ErickWendel/59aa568e09aff06a90c0a71bbef5c6e5 to your computer and use it in GitHub Desktop.

Revisions

  1. ErickWendel revised this gist Dec 19, 2024. 1 changed file with 8 additions and 0 deletions.
    8 changes: 8 additions & 0 deletions thread3.js
    Original file line number Diff line number Diff line change
    @@ -3,6 +3,14 @@ const { Worker, isMainThread, parentPort, threadId } = require('worker_threads')
    if (isMainThread) {
    } else {
    parentPort.on('message', (message) => {
    // This works even with sync execution
    // let lastExecuted = Date.now();
    // while (true) {
    // if (Date.now() - lastExecuted > 900) {
    // parentPort.postMessage(message + threadId);
    // lastExecuted = Date.now();
    // }
    // }
    setInterval(() => {
    parentPort.postMessage(message + threadId);
    }, 1000);
  2. ErickWendel revised this gist Dec 19, 2024. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion thread3.js
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,6 @@ const { Worker, isMainThread, parentPort, threadId } = require('worker_threads')
    if (isMainThread) {
    } else {
    parentPort.on('message', (message) => {
    parentPort.postMessage(message + threadId);
    setInterval(() => {
    parentPort.postMessage(message + threadId);
    }, 1000);
  3. ErickWendel revised this gist Dec 19, 2024. No changes.
  4. ErickWendel created this gist Dec 19, 2024.
    24 changes: 24 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    const { Worker, isMainThread, parentPort, threadId } = require('worker_threads');

    if (isMainThread) {
    const worker = new Worker(__filename);

    worker.on('message', (msg) => {
    console.log(`${msg}`);
    });

    worker.postMessage('main >');
    } else {
    parentPort.on('message', (message) => {
    const innerWorker = new Worker('./thread2.js');
    innerWorker.postMessage(message + threadId + '> ');

    innerWorker.on('message', (msg) => {
    parentPort.postMessage(msg)
    });

    setTimeout(() => {
    innerWorker.terminate()
    }, 2000);
    });
    }
    14 changes: 14 additions & 0 deletions thread2.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    const { Worker, isMainThread, parentPort, threadId } = require('worker_threads');

    if (isMainThread) {
    } else {
    parentPort.on('message', (message) => {
    const innerWorker = new Worker('./thread3.js');
    innerWorker.postMessage(message + threadId + '> ');

    innerWorker.on('message', (msg) => {
    parentPort.postMessage(msg)
    });

    });
    }
    11 changes: 11 additions & 0 deletions thread3.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    const { Worker, isMainThread, parentPort, threadId } = require('worker_threads');

    if (isMainThread) {
    } else {
    parentPort.on('message', (message) => {
    parentPort.postMessage(message + threadId);
    setInterval(() => {
    parentPort.postMessage(message + threadId);
    }, 1000);
    });
    }