win*_*ter 6 multithreading node.js
我一直试图将在我的程序中完成的一些工作分开在不同的线程中。其中一个函数需要将流返回到主线程,但我遇到了以下异常:
Error
    at MessagePort.<anonymous> ([worker eval]:12:16)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
From previous event:
    at PoolWorker.work (node_modules/node-worker-threads-pool/src/pool-worker.js:22:12)
    at DynamicPool.runTask (node_modules/node-worker-threads-pool/src/pool.js:110:47)
    at DynamicPool.exec (node_modules/node-worker-threads-pool/src/dynamic-pool.js:51:17)
    at renderToPdf (src/modules/templates/render2.js:27:14)
    at Context.<anonymous> (test/modules/templates/render.test.js:185:68)
Run Code Online (Sandbox Code Playgroud)
我试图构建一个最小的例子来重现我想要实现的目标。基本上,我需要的是将可读流发送回主线程。在这个例子中,我也有一个例外:
为了有一个工作线程池,我专门使用了库node-worker-threads-pool the DynamicPool。在里面,我正在尝试转换html为 PDF。但我需要以某种方式将流返回到主线程。
Error
    at MessagePort.<anonymous> ([worker eval]:12:16)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
From previous event:
    at PoolWorker.work (node_modules/node-worker-threads-pool/src/pool-worker.js:22:12)
    at DynamicPool.runTask (node_modules/node-worker-threads-pool/src/pool.js:110:47)
    at DynamicPool.exec (node_modules/node-worker-threads-pool/src/dynamic-pool.js:51:17)
    at renderToPdf (src/modules/templates/render2.js:27:14)
    at Context.<anonymous> (test/modules/templates/render.test.js:185:68)
Run Code Online (Sandbox Code Playgroud)
err DataCloneError: function() {
    if (this.autoClose) {
      this.destroy();
    }
  } could not be cloned.
    at MessagePort.<anonymous> ([worker eval]:12:16)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
Run Code Online (Sandbox Code Playgroud)
你知道我怎样才能做到这一点吗?
PS:我知道 IO 操作在工作线程中的性能不如它们在 nodejs 主线程中,但我需要这样做以避免使用这些操作锁定主线程。
简短版本:你不能。
节点中的 IPC 是通过一些黑匣子处理的,但我们知道消息对象在发送之前被序列化,并在接收后反序列化:您无法序列化 a,Stream因为它基于底层级别(套接字、文件描述符、自定义读取)并编写无法序列化/反序列化的函数等)。
所以你被迫交换可序列化的数据。
看看html-pdf我认为转换程序的一个简单方法是使用pdf.toBuffer:而不是尝试将 a 发送Stream到主线程并在主线程中读取它来获取 a Buffer,您应该将 a 发送Buffer到主线程而不是按原样使用它。
希望这可以帮助。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           667 次  |  
        
|   最近记录:  |