1) 멀티 스레딩은 매우 어렵습니다. 불행히도 지금까지이 아이디어를 제시 한 방식은 얼마나 어려운지 과소 평가하고 있음을 나타냅니다.
현재로서는 언어에 단순히 "스레드를 추가"하고 나중에 올바르게 수행하고 수행하는 방법에 대해 걱정하는 것처럼 들립니다. 특히:
두 작업이 변수에 동시에 액세스하려고하면 원자로 표시되고 액세스를 위해 경쟁합니다.
...
원자 변수가 모든 것을 해결하지는 못한다는 데 동의하지만 동기화 문제에 대한 해결책을 찾는 것이 다음 목표입니다.
"동기화 문제 해결"없이 Javascript에 스레드를 추가하는 것은 "추가 문제 해결"없이 Javascript에 정수를 추가하는 것과 같습니다. 문제의 본질에 매우 근본적이기 때문에 아무리 원할지라도 특정 솔루션을 염두에두고 멀티 스레딩을 추가 할 가치가 있는지 여부에 대해서는 기본적으로 논의 할 필요가 없습니다.
또한 모든 변수를 원 자성으로 만드는 것은 다중 스레드 프로그램이 단일 스레드 프로그램 보다 성능을 저하시킬 수있는 일종의 일이므로 실제로보다 현실적인 프로그램에서 성능을 테스트하고 무언가를 얻고 있는지 여부를 확인하는 것이 더 중요합니다.
또한 node.js 프로그래머로부터 스레드를 숨기려고하는지 또는 어느 시점에 스레드를 노출하려는 경우 멀티 스레드 프로그래밍을 위해 새로운 Javascript 방언을 효과적으로 만들지 여부는 분명하지 않습니다. 두 옵션 모두 잠재적으로 흥미롭지 만 아직 어느 것을 목표로 삼고 있는지 결정하지 않은 것처럼 들립니다.
따라서 현재 프로그래머에게 단일 스레드 환경에서 동기화 문제에 대한 솔루션이없고 실제 성능을 향상시키는 증거가없고 이러한 문제를 해결할 계획이없는 새로운 다중 스레드 환경으로 전환 할 것을 요청하고 있습니다.
아마 사람들이 당신을 진지하게 받아들이지 않는 이유 일 것입니다.
2) 단일 이벤트 루프의 단순성과 견고성은 큰 이점입니다.
Javascript 프로그래머는 Javascript 언어가 경쟁 조건 및 모든 진정한 멀티 스레딩 프로그래밍을 괴롭히는 기타 교활한 버그로부터 "안전"하다는 것을 알고 있습니다. 그들이 안전을 포기한다는 확신을 포기하도록 설득하기 위해 강력한 주장이 필요하다는 사실은 그들이 책임감있게 만듭니다.
어떻게 든 그 안전성을 유지할 수 없다면 멀티 스레드 node.js로 바꾸고 싶은 사람은 멀티 스레드 애플리케이션을 위해 처음부터 설계된 Go와 같은 언어로 전환하는 것이 더 나을 것입니다.
3) 자바 스크립트는 프로그래머에게 스레드 관리를 직접 노출시키지 않고 이미 "백그라운드 스레드"(WebWorkers) 및 비동기 프로그래밍을 지원합니다.
이러한 기능은 단일 이벤트 루프의 안전성을 포기하지 않으면 서 실제 세계의 Javascript 프로그래머에게 영향을 미치는 많은 일반적인 사용 사례를 이미 해결합니다.
이러한 기능이 해결되지 않고 Javascript 프로그래머가 솔루션을 원한다는 특정 사용 사례가 있습니까? 그렇다면 특정 사용 사례의 맥락에서 multithreaded node.js를 제시하는 것이 좋습니다.
PS는 무엇 설득 것 나를 다중 스레드 Node.js를 구현 전환 시도?
Javascript / node.js에 단순한 멀티 스레딩의 이점이 있다고 생각되는 사소한 프로그램을 작성하십시오. 이 샘플 프로그램에서 일반 노드 및 다중 스레드 노드에서 성능 테스트를 수행하십시오. 사용중인 버전이 버그 나 불안정성을 유발하지 않으면 서 여러 코어의 런타임 성능, 응답 성 및 사용량을 크게 향상 시킨다는 것을 보여주십시오.
그렇게하면 사람들이이 아이디어에 훨씬 더 관심이있는 것을 보게 될 것입니다.