내가 실수하지 않는다면, 당신은 멀티 스레딩의 라인을 따라 무언가를 찾고, 동시에 여러 것을 계산할 것입니다.
다중 실행 한 번에
SIMD 멀지 않은 뒤에 노드 구현과, 브라우저에 그것의 방법을 찾기 위해 시작했다. node-simd 또는 MDN SIMD (browsers)을보십시오. SIMD는 아직 실험 중이며 현재 지원되는 CPU에서만 작동합니다 (분명히 모든 CPU에이 기능이있는 것은 아니기 때문에). 그것은 한 번에 여러 가지를 실행, 일반 JS 비교 예는 JS가 될 것 SIMD하기 :
// Normal addition, 4 actions are executed.
var a = [1, 2, 3, 4];
var b = [5, 6, 7, 8];
var c = [];
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];
c[3] = a[3] + b[3];
c; // Array[6, 8, 10, 12]
// SIMD execution - all additions are processed simultaenously through the CPU
var a = SIMD.Float32x4(1, 2, 3, 4);
var b = SIMD.Float32x4(5, 6, 7, 8);
var c = SIMD.Float32x4.add(a,b);
c; // Float32x4[6, 8, 10, 12]
멀티 스레딩
를 멀티 스레딩에 관해서, webworkers
지금 잠시 동안 브라우저 환경에 존재했다. 이것은 in this repository처럼 HTML 스펙에 따라 Node에 완전히 포팅되었습니다.
다른 스레드 및 다른 CPU에서 child_process
모듈을 사용하여 자식 프로세스를 이미 실행할 수 있기 때문에 webworkers
이 첫 번째 위치에서 노드로 이식 된 이유에 대해서는 good explanation입니다. node-webworker
은 각 프로세스가 컨텍스트 내에서 실행되고 자체 node
프로세스에서 실행되므로 훌륭한 모듈입니다. 따라서 노드와 함께 멀티 스레딩이 가능합니다.
다른 CPU에서 다른 프로세스를 실행하려면 node-webworker
을 사용하거나 child_process
을 사용하여 다른 스레드를 생성하여 다른 CPU 코어와 동시에 개별 작업을 수행하십시오. node-webworker
은 익숙한 postMessage
API를 사용하여 이벤트를 수신하고 child_process
은 stdin/stdout/stderr
을 통해 통신합니다. 질문 :
메시지를 전달하여 동시에 통신 할 수있는 여러 실행 흐름을 만들려면 최소한 [편도] (https://www.npmjs.com/package/webworker-threads)가 있다는 인상하에있었습니다. 서로. 그렇지 않니? –
@DavidSchwartz, 맞습니다. 그 접근법은'child_process'를 사용하고 부모 프로세스의'child_process.on ('message')'이벤트와 자식의'process.send()'함수로 메시지 전달을 구현할 수 있습니다 방법. 또한 Node.js가 핵심 기능의 일부로 제공하는 것에 대한 나의 대답을 제한하고 잠재적으로 어떤 패키지가 제공 할 수있는 것이 아닌지를 제한하고자했습니다. – peteb