Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v10.x] process: split bootstrappers by threads that can run them #21866

Closed

Commits on Jul 18, 2018

  1. process: split bootstrappers by threads that can run them

    This patch split part of the bootstrappers into three files:
    
    - `lib/internal/process/main_thread_only.js`: contains bootstrappers
      that can only be run in the main thread, including
      - `setupStdio` for the main thread that sets up `process.stdin`,
        `process.stdout`, `process.error` that may interact with external
        resources, e.g. TTY/File/Pipe/TCP sockets
      - `setupProcessMethods` that setup methods changing process-global
        states, e.g. `process.chdir`, `process.umask`, `process.setuid`
      - `setupSignalHandlers`
      - `setupChildProcessIpcChannel` that setup `process.send` for
        child processes.
    - `lib/internal/process/worker_thread_only.js`: contains bootstrappers
      that can only be run in the worker threads, including
      - `setupStdio` for the worker thread that are streams to be
        manipulated or piped to the parent thread
    - `lib/internal/process/per_thread.js`: contains bootstrappers
        that can be run in all threads, including:
      - `setupAssert` for `process.assert`
      - `setupCpuUsage` for `process.cpuUsage`
      - `setupHrtime` for `process.hrtime` and `process.hrtime.bigint`
      - `setupMemoryUsage` for `process.memoryUsage`
      - `setupConfig` for `process.config`
      - `setupKillAndExit` for `process.kill` and `process.exit`
      - `setupRawDebug` for `process._rawDebug`
      - `setupUncaughtExceptionCapture` for
        `process.setUncaughtExceptionCaptureCallback` and
        `process.hasUncaughtExceptionCaptureCallback`
    
    Hopefully in the future we can sort more bootstrappers in
    `boostrap/node.js` into these three files and further group
    them into functions that can be run before creating the
    snapshot / after loading the snapshot.
    
    This patch also moves most of the `isMainThread` conditionals
    into the main bootstrapper instead of letting them scattered around
    special-casing different implementations.
    
    PR-URL: nodejs#21378
    Reviewed-By: Gus Caplan <me@gus.host>
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
    joyeecheung committed Jul 18, 2018
    Configuration menu
    Copy the full SHA
    151f241 View commit details
    Browse the repository at this point in the history