1) Multithreading son derece zor ve ne yazık ki bu fikri şu ana dek sunma şekliniz, bunun ne kadar zor olduğunu ciddiye aldığınız anlamına geliyor.
Şu anda, kulağa dile sadece "konu ekliyorsunuz" ve nasıl doğru ve performans göstereceğine dair endişe duyuyorsunuz. Özellikle:
Eğer iki görev aynı anda bir değişkene erişmeye çalışırsa, atomik olarak işaretlenir ve erişim için yarışırlar.
...
Atom değişkenlerinin her şeyi çözmeyeceği konusunda hemfikirim, ancak senkronizasyon problemi için bir çözüm üzerinde çalışmak bir sonraki hedefim.
Javascript'e "senkronizasyon problemi için çözüm" olmadan konu eklemek, Javascript'e "ekleme problemi için çözüm" olmadan tamsayı eklemek gibidir. Sorunun doğası için o kadar temeldir ki, temelde okuyucunun belirli bir çözüm olmadan eklemeye değip değmeyeceğini, ne kadar çok istersek isteyelim, tartışmanın hiçbir anlamı yoktur.
Ayrıca, tüm değişkenleri atomik yapmak, çok iş parçacıklı bir programın tek parçalı iş parçasından daha kötü performans göstermesine neden olacak bir şeydir; bu , daha gerçekçi programlardaki performansı test etmeyi ve bir şey kazanıp kazanmadığınızı görmeyi daha da önemli kılar.
Ayrıca, düğümleri node.js programlayıcısından gizli tutmaya mı çalışıyorsunuz, yoksa bir noktada açıklamayı planlıyorsanız, okuyuculu programlama için yeni bir Javascript lehçesini etkili bir şekilde hazırlıyorsanız, bu da açık değildir. Her iki seçenek de potansiyel olarak ilginç, ancak henüz hangisini hedeflediğinize karar vermemiş gibisiniz.
Şu anda, programcılardan, tek kullanımlık bir ortamdan, senkronizasyon sorunu için bir çözümü olmayan ve gerçek dünya performansını artırdığına ve bu sorunların çözülmesine yönelik bir planı bulunmadığına dair kanıt içermeyen yepyeni bir okuyuculu ortama geçmeyi düşünmelerini istiyorsunuz.
Muhtemelen bu yüzden insanlar seni ciddiye almıyorlar.
2) Tek olay döngüsünün sadeliği ve sağlamlığı çok büyük bir avantajdır.
Javascript programcıları Javascript dilinin yarış koşullarından ve hepsi gerçekten çok iş parçacıklı programlamayı rahatsız eden diğer son derece sinsi böceklerden "güvenli" olduğunu bilirler. Güvenlikten vazgeçmeleri için onları ikna etmek için güçlü argümanlara ihtiyaç duymaları gerçeği kapalı fikirli olmalarını sağlamaz, onları sorumlu yapar.
Bu güvenliği bir şekilde koruyamazsanız, çok iş parçacıklı bir node.js'ye geçmek isteyebilecek herhangi biri, çok iş parçacıklı uygulamalar için sıfırdan tasarlanmış Go gibi bir dile geçiş yapmaktan muhtemelen daha iyi olacaktır.
3) Javascript, doğrudan programcıya konu yönetimi göstermeden "arka plan konuları" (WebWorkers) ve zaman uyumsuz programlamayı desteklemektedir.
Bu özellikler, tek olay döngüsünün güvenliğinden vazgeçmeden, gerçek dünyadaki Javascript programcılarını etkileyen yaygın kullanım durumlarının çoğunu zaten çözmektedir.
Bu özelliklerin çözülmediğini ve Javascript programcılarının bunun için bir çözüm istediğini düşündüğünüz özel kullanım durumlarınız var mı? Öyleyse, çok iş parçacıklı node.js kodunuzu bu belirli kullanım durumu bağlamında sunmak iyi bir fikirdir.
PS Çok iş parçacıklı bir node.js uygulamasına geçmeyi denemek için beni ne ikna eder?
Javascript / node.js'de orijinal çoklu kullanımdan fayda sağlayacağını düşündüğünüz önemsiz bir program yazın. Bu örnek programdaki performans testlerini normal düğümde ve çok iş parçacıklı düğümünüzde yapın. Sürümünüzün çalışma süresi performansını, yanıt verebilirliğini ve birden fazla çekirdeğin kullanımını, herhangi bir hata veya dengesizlik olmadan, önemli ölçüde geliştirdiğini gösterin.
Bunu yaptıktan sonra, bence bu fikirle daha çok ilgilenen insanlar göreceksiniz.