2013-10-17 3 views
1

3 가지 정렬 알고리즘을 구현했으며, 병렬로 실행하고 끝내 자마자 바로 console.log 인쇄를하고 싶습니다. 비동기 라이브러리 (https://github.com/caolan/async)를 사용하여 parallel 함수를 사용해 보았는데 기대했던대로 작동하지 않는 것 같습니다. 나는 자식 프로세스를 생성하는 것에 대한 몇 가지 주제를 보았지만, 항상 다음 종류를 실행하기 전에 하나의 정렬이 끝날 때까지 기다리는 것처럼 보인다. 항상 실행 된 순서대로 인쇄됩니다. 내 빠른 정렬을 실행 순서에 관계없이 느린 정렬 전에 인쇄 할 것이라고 생각합니다. node.js로 이러한 유형의 동작을 구현할 수 있습니까? 그렇다면 어떻게? 그렇지 않다면 왜 안 되겠습니까? 정말이 라이브러리와 같은정렬 알고리즘을 병렬로 실행하려면 어떻게해야합니까?

답변

0

: http://adambom.github.io/parallel.js/

당신은 (워드 프로세서)과 같이 사용할 수 있습니다 :

var slowSquare = function (n) { 
    var i = 0; 
    while (++i < n * n) {} 
    return i; 
}; 

// Create a job 
var p = new Parallel(100000); 

// Spawn our slow function 
p.spawn(slowSquare).then(yourCallback); 
0

정렬은 동기 작업입니다.

Node.js은 단일 스레드이기 때문에 여러 개의 병렬 생성을 병렬로 수행 할 수있는 방법이 없습니다. child processes. 단일 Node.js 프로세스는 동기 코드를 병렬로 실행할 수 없습니다.

당신이 할 수있는 가장 좋은 방법은 각 정렬 알고리즘을 하위 프로세스를 생성 할 메타 함수로 랩핑 한 다음 실제 정렬을 전달하는 것입니다.

프로덕션에서 병렬 처리를 실현하려면 cluster과 같은 것을 사용하여 각 작업마다 새 작업을 생성하는 대신 일련의 작업자를 유지하는 것이 가장 좋습니다.

비슷한 기능을 가진 바로 사용할 수있는 라이브러리가 있습니다. 방금 Google을 사용하여 찾았습니다 : node-compute-cluster. Connor Blackin his answer에 또 다른 언급했다.

관련 문제