Çok iş parçacıklı bir JavaScript çalışma zamanı uygulaması yapmanın sakıncaları nelerdir? [kapalı]


51

Geçen hafta boyunca çok iş parçacıklı bir JavaScript çalışma zamanı uygulaması üzerinde çalışıyorum. JavaScript ++ 'u kullanarak C ++' da yapılmış bir konsept kanıtım var.

Mimari basittir: çalışma zamanı ana betiği değerlendirmeyi bitirdiğinde, bir iş parçacığı havuzunu başlatır ve birleştirir; bu, paylaşılan bir öncelik sırasından görevleri seçmeye başlar, iki görev aynı anda değişkene erişmeye çalışırsa, atomik olarak işaretlenir ve erişim için çalışırlar. .

Okuyuculu çalışma node.js çalışma zamanı

Sorun şu ki, bu tasarımı bir JavaScript programcısına gösterdiğimde son derece olumsuz geri bildirim alıyorum ve nedenini bilmiyorum. Özel olarak bile, hepsi JavaScript'in tek bir iş parçacığı olduğunu, mevcut kütüphanelerin yeniden yazılması gerektiğini ve bunun üzerinde çalışmaya devam edersem her canlıyı ortaya çıkaracaklarını ve gremlinlerin doğacağını söylüyorlar.

Başlangıçta yerli bir coroutine uygulaması da yaptım (artırma bağlamlarını kullanarak), ama onu kesmek zorunda kaldım (JavaScriptCore yığın hakkında bilgilidir) ve gazaplarını riske atmak istemedim, bu yüzden bahsetmeme karar verdim.

Ne düşünüyorsun? JavaScript tek bir iş parçacığı olarak mı kastediliyor? Neden herkes eşzamanlı bir JavaScript çalışma zamanı fikrine karşı?

Düzenleme: Proje şimdi GitHub'da , kendiniz deneyin ve ne düşündüğünüzü bana bildirin.

Aşağıdakiler, hiçbir çekişmeden paralel olarak tüm CPU çekirdeğinde çalışan sözlerin bir resmidir:

Koşmak aynı anda vaat ediyor.


7
Bu çok tartışılan bir soru gibi görünüyor. Fikrini beğenmeyen insanlara neden sorunlu olacağını düşündüğünü sordunuz mu?
5gon12eder

26
Çok iş parçacıklı olmayan bir şeye konu eklemek, sürücünün yolunu sağlamadan tek şeritli bir yolu bir otobana dönüştürmek gibidir. İnsanlar rastgele çarpmaya başlayana kadar çoğu zaman oldukça iyi çalışacaktır. Çok iş parçacıklı olarak, ya çoğaltamayacağınız ince zamanlama hatalarınız olur ya da çoğu zaman davranışları düzensiz tutarsınız. Bunu düşünerek tasarlaman gerek. İş parçacığı senkronizasyonu gerekir. Sadece değişkenleri atomik yapmak yarış koşullarını ortadan kaldırmaz.
mgw854

2
Paylaşılan duruma çok iş parçacıklı erişimi ele almayı nasıl planlıyorsunuz? "Atomik olarak işaretlenmiş ve erişime açık", bunun gerçekten işe yarayacağını düşündüğünüzü açıklamıyor. Bu fikre yönelik olumsuz tutumların, insanların bu işi nasıl gerçekleştireceğiniz konusunda hiçbir fikrinin bulunmamasından kaynaklandığını tahmin ediyorum. Veya, Java veya C ++ 'ta olduğu gibi geliştirici üzerindeki tüm yükleri uygun muteksleri ve benzerlerini kullanmak için kullanıyorsanız, insanlar muhtemelen neden bu komplikasyon ve programlama riskini ondan özgür bir ortamda istediklerini düşünüyorlar.
jfriend00

17
Çünkü dişler arasındaki rastgele durumu otomatik olarak koordine etmek neredeyse imkansız bir problem olarak kabul edilir, bu yüzden otomatik olarak yapan bir şey önerebilecek kadar güvenilirliğiniz yoktur. Ve eğer yükleyiciyi Java veya C ++ gibi geliştiriciye geri yükleyecekseniz, çoğu node.js programcısı bu yükü istemez - ki bu node.js bununla uğraşmak zorunda değildir çoğunlukla Daha sempatik bir kulak istiyorsanız, bu konuda ne ve ne teklif edeceğinizi ve neden iyi ve yararlı olacağını açıklamak / göstermek zorunda kalacaksınız.
jfriend00

3
Lütfen çalışmalarına devam et. Çok iş parçacıklı olmayan dilleri oyuncak dil olarak kabul ediyorum. Sanırım çoğu JavaScript geliştiricisi, tek bir iş parçacığı modeli olan tarayıcıyla çalışıyor.
Chloe,

Yanıtlar:


70

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.


1
1) Tamam, bir süredir senkronizasyon meselesini ertelediğimi itiraf ediyorum. 'İki görev devam edecek' dediğimde , bu benim tasarımım değil, esas olarak bir gözlem: dl.dropboxusercontent.com/u/27714141/… - Burada ne tür bir büyücülük JavaScriptCore'un performans gösterdiğinden emin değilim ama yapmamalıyım ' Bu doğal olarak atomik değilse bu dize bozuluyor mu? 2) Kesinlikle katılmıyorum. JS'nin oyuncak dili olarak görülmesinin nedeni budur. 3) ES6 vaatleri, bir iş parçacığı havuzu zamanlayıcısı kullanılarak gerçekleştirilirse çok daha fazla performans gösterirdi.
voodooattack

13
@voodooattack "Bu, JS'nin oyuncak dili olarak görülmesinin nedenidir." Hayır, bu nedendir sen bir oyuncak dil düşünün. Milyonlarca insan her gün JS kullanıyor ve onunla, eksikliklerden ve hepsinden gayet mutlu. Başkalarının gerçekten sahip olduğu, sadece dilleri değiştirerek daha iyi çözülmeyen bir sorunu çözdüğünüzden emin olun.
Chris Hayes

@ChrisHayes Sorun şu ki, neden bunları düzeltirken neden eksikliklerine katlanmaktayım? Bir özellik olarak eşzamanlılık JavaScript'i iyileştirir mi?
voodooattack

1
@voodooattack Bu soru. Bir özellik olarak eşzamanlılık Javascript'i iyileştirir mi? Eğer buna "hayır" olmayan bir topluluğa cevap verebilirseniz, o zaman belki de bir şeye sahipsiniz demektir. Bununla birlikte, olay döngüsünün ve Düğüm'ün olayları engellemek için çalışan iş parçacıklarına vereceği yerel delegasyon, insanların yapması gerekenlerin çoğu için yeterli gibi görünüyor. İnsanların gerçekten Javascript ile işlenmeleri gerekiyorsa, Javascript çalışanlarını kullanacaklarını düşünüyorum. Ancak, işçileri JS dosyaları yerine birinci sınıf işlevlerle çalışmalarını sağlayacak bir yol bulabilirseniz, o zaman gerçekten bir şeyler olabilirsiniz .
öğle yemeği317

7
@voodooattack JavaScript'i oyuncak dili olarak adlandıran kişiler neden bahsettiğini bilmiyor. Her şey için gidilecek dil mi? Tabii ki değil, ama böyle reddetmek kesinlikle bir hatadır. JS'nin bir oyuncak dili olduğu fikrini ortadan kaldırmak istiyorsanız, önemsiz olmayan bir üretim uygulaması yapın veya var olanı işaret edin. Sadece eşzamanlılık eklemek, bu insanların fikrini değiştirmez zaten.
jpmc26

16

Yaklaşımınızdaki bir sorunu göstermek için sadece burada tahmin ediyorum. Hiçbir yerde bağlantı olmadığı için gerçek uygulamaya karşı test edemiyorum ...

Değişmezler her zaman bir değişkenin değeriyle ifade edilmediğinden ve 'bir değişken' genel durumda bir kilidin kapsamı olmadığında yeterli olmadığını söyleyebilirim. Örneğin, bir değişmezliğe sahip olduğumuzu hayal edin a+b = 0(bir bankanın iki hesapla bakiyesi). Aşağıdaki iki işlev değişmezin her bir işlevin sonunda ( tek iş parçacıklı JS'de yürütme birimi) tutulmasını sağlar.

function withdraw(v) {
  a -= v;
  b += v;
}
function deposit(v) {
  b -= v;
  a += v;
}

İki konu yürütmek Şimdi, sizin çok iş parçacıklı dünyada, ne olur withdrawve depositaynı zamanda? Sağol Murphy ...

(+ = Ve - = özel olarak işleyen bir kodunuz olabilir, ancak bu hiç yardımcı olmaz. Bir noktada, bir işlevde yerel duruma sahip olacaksınız ve iki değişkeni aynı anda 'kilitlemek' mümkün olmayacak ihlal edilmek


EDIT: Kodunuz, https://gist.github.com/thriqon/f94c10a45b7e0bf656781b0f4a07292a adresindeki Go koduna semantik olarak eşdeğerse , yorumum doğru ;-)


Bu yorum anlamsız, ancak filozoflar birden fazla nesneyi kilitleme yeteneğine sahipler, ancak açlık çekiyorlar çünkü onları tutarsız bir düzende kilitlediler.
Dietrich Epp

3
@voodooattack "Sadece test ettim ..." İplik çizelgelemede tutarsız yürütme emriyle hiç karşılaşmadınız mı? Makineden makineye, makineden makineye değişir. İşlemlerin nasıl planlandığına dair bir mekanizma tanımlanmadan oturmak ve tek bir test (hatta yüz test!) Yapmak işe yaramaz.
jpmc26

4
@voodooattack Sorun sadece eşzamanlılığı test etmenin kullanışlı olmamasıdır. Değişmezliğin dayanacağını veya mekanizmanın üretimde asla güvenilmez olduğunu kanıtlayabilmeniz gerekir .
sapi

1
Ancak, kullanıcıya kesinlikle “sistemi sorumlu bir şekilde kullanma” için herhangi bir araç vermediniz, çünkü kesinlikle kilitleme mekanizması yoktur. Her şeyi atomik yapmak iş parçacığı güvenliği yanılsaması yaratır (ve atomik erişime ihtiyacınız olmasa bile, atomik olan her şeyin performansını vurursunuz), ama aslında burada bir thriqon'un verdiği gibi eşzamanlılık sorunlarını çözmez. Başka bir örnek için, bir başka iş parçacığı diziden öğe eklerken veya kaldırırken bir iş parçacığındaki bir diziyi yinelemeyi deneyin. Bu konuda, motorun Array uygulamasını uygulamasının iş parçacığının güvenli olduğunu bile düşündüren nedir?
Zach Lipton

2
@voodooattack Eğer kullanıcılar konularınızı sadece paylaşılan veri veya yan etkileri olmayan fonksiyonlar için kullanabilirlerse (ve onları daha önce başka bir şey için kullanmasak daha iyi olurlar, çünkü burada gördüğümüz gibi, iplik güvenliğini sağlamanın bir yolu yoktur), Öyleyse, Web Çalışanlarına (veya Web Çalışanları çevresinde daha kullanışlı bir API sağlayan birçok kütüphaneden birine) hangi değeri veriyorsunuz? Web İşçileri daha güvenlidir, çünkü kullanıcının sistemi "sorumsuzca" kullanmasını imkansız kılar.
Zach Lipton

15

On yıldan uzun bir süre önce, JavaScript'in mucidi Brendan Eich , kesinlikle JavaScript'in tasarım mitolojisinin birkaç kanonik belgesinden biri olan Threads Suck adlı bir makale yazdı .

Doğru olup olmadığı bir başka sorudur, ancak JavaScript topluluğunun eşzamanlılık hakkında nasıl düşündüğü üzerinde büyük bir etkisi olduğunu düşünüyorum.


31
Tavsiye edebileceğim son kişi Brendan Eich. Bütün kariyeri JavaScript'i oluşturmak üzerine kuruludur, ki o kadar kötü ki doğuştan gelen zenginliklerini denemek ve üstesinden gelmek için yarattığımız bir yığın araç var. Dünyada onun yüzünden kaç tane geliştirici saatinin boşa harcandığını düşünün.
Phil Wright

12
Genel olarak fikrini neden düşürdüğünüzü ve hatta JavaScript konusundaki küçümsemenizi anlıyorum, ancak bakış açınızın alandaki uzmanlığını göz ardı etmesine nasıl izin verdiğini anlamıyorum.
Billy Cravens

4
@BillyCravens haha, Javascript'teki kanonik kitap bile: Crockford'un "Javascript'in iyi kısımları " oyunu oyunun başlığında veriyor.
Eich'in

13
@PhilWright: Javascript'in ilk uygulaması Lisp çeşidiydi. Bu benim için ona büyük saygı duyuyor. Patronunun Lisp sözdizimini C benzeri sözdizimi ile değiştirmeye zorlama kararı onun suçu değil. Çekirdeğindeki Javascript hala bir Lisp çalışma zamanı.
slebetman

7
@PhilWright: Dilin zekâsı olduğu için Eich'i suçlamamalısın. Erken uygulamalardaki hataları ve JS'nin olgunlaşmasını engelleyen bir web dili için geriye dönük uyumluluk ihtiyacı var. Temel kavramlar hala harika bir dil oluşturur.
Bergi

8

Atomik erişim iş parçacığı güvenli davranışa çevrilmez.

Bunun bir örneği, genel bir veri yapısının bir hashmaha yeniden şekillendirme (örneğin bir nesneye bir özellik eklerken) veya genel bir diziyi sıralama gibi bir güncelleme sırasında geçersiz olması gerektiğidir. Bu süre zarfında, başka hiçbir iş parçacığının değişkene erişmesine izin veremezsiniz. Bu, temel olarak okuma-güncelleme-yazma çevrimlerinin tamamını tespit etmeniz ve kilitlemeniz gerektiği anlamına gelir. Eğer güncelleme önemsiz değilse, bu sorun bölgesinin durmasına neden olacaktır.

Javascript baştan beri tek dişli ve korumalı alandır ve tüm kodlar bu varsayımlar göz önünde bulundurularak yazılmıştır.

Bu, izole edilmiş bağlamlarda ve 2 ayrı bağlamın farklı dişlerde çalışmasına izin verme konusunda büyük bir avantaja sahiptir. Ayrıca, javascript yazan kişilerin yarış koşullarıyla ve diğer çok parçacıklı tuzaklarla nasıl başa çıkacaklarını bilmeleri gerekmediği anlamına gelir.


Bu nedenle, zamanlayıcı API'sinin ileri tarafta daha fazla olması gerektiğini ve dahili olarak hiçbir yan etkisi olmayan sözler ve işlevler için kullanılması gerektiğini düşünüyorum.
voodooattack

6

Yaklaşımınız performansı önemli ölçüde artıracak mı?

Şüpheli. Bunu gerçekten kanıtlaman gerek.

Yaklaşımınız kod yazmayı daha kolay / daha hızlı hale getirecek mi?

Kesinlikle hayır, çok iş parçacıklı kod, tek iş parçacıklı koddan daha doğru elde etmek için çoğu zaman zordur.

Yaklaşımınız daha sağlam mı olacak?

Kilitlenmeler, yarış koşulları vb. Düzeltmek için bir kabus.


2
Node.js kullanarak bir raytracer oluşturmayı deneyin, şimdi tekrar iş parçacığıyla tekrar deneyin. Çoklu süreç her şey değildir.
voodooattack

8
@voodooattack, aklı başında hiç kimse javascript kullanarak, dişli olmayan veya olmayan bir ışını izleyici yazmaz, çünkü tamamen derlenmiş bir dilde, tercihen SIMD destekli daha iyi yazılmış, nispeten basit fakat hesaplama yoğun bir algoritmadır. . Javascript'in kullanıldığı problemler için çoklu süreç fazlasıyla yeterli.
Jan Hudec

@JanHudec: Heh, JS, SIMD desteğini de alacaktır
Bergi

2
@voodooattack Eğer onların farkında değilseniz, SharedArrayBuffers'a bir bakın . JavaScript daha fazla eşzamanlılık yapısı oluşturuyor, ancak çok fazla dikkat çekiyor, belirli acı noktalarını ele alıyor, yıllarca birlikte yaşamak zorunda kalacağımız kötü tasarım kararlarını en aza indirmeye çalışıyor.
MONICA REINSTATE -Jeremy Banks 13.06.2006

2

Uygulamanız sadece eşzamanlılık tanıtmakla ilgili değil, aynı zamanda eşzamanlılık, yani paylaşılan değişken duruma göre eşzamanlılık uygulamak için belirli bir yol tanıtmakla ilgilidir. Tarih boyunca insanlar bu tür eşzamanlılıkları kullandılar ve bu da pek çok soruna yol açtı. Elbette, paylaşılabilir değişken durumlu eşzamanlılık kullanarak mükemmel bir şekilde çalışan basit programlar oluşturabilirsiniz, ancak herhangi bir mekanizmanın gerçek testi yapabilecekleri değil, program karmaşıklaştıkça ve daha fazla özellik programa eklendikçe ölçeklenebilir. Yazılımın bir zamanlar oluşturduğunuz ve onunla yaptığınız statik bir şey olmadığını unutmayın, zamanla gelişmeye devam eder ve herhangi bir mekanizma veya kavram olabilir.

Bu modellerin ne tür faydalar sağladığını anlamanıza yardımcı olmak için diğer eşzamanlılık modellerine bakabilirsiniz (ör: mesaj iletme).


1
ES6'nın verdiğim sözler, erişim için rekabet etmediklerinden uygulamamın modelinden fayda sağlayacağını düşünüyorum.
voodooattack

WebWorkers teknik özelliklerine bir göz atın. Uygulamalarını sağlayan npm paketleri var ancak bunları bir paket yerine motorunuzun çekirdeği olarak uygulayabilirsiniz
Ankur

JavaScriptCore (kullandığım JS'nin webkit uygulaması) zaten bunları uygular, bu sadece bir derleme bayrağıdır.
voodooattack

Tamam. WebWorkers mesaj geçen eşzamanlılık vardır. Raytracer örneğinizi onlarla deneyebilir ve değişken durum yaklaşımıyla karşılaştırabilirsiniz.
Ankur

4
Mesaj iletimi daima değişebilir durumun üstüne uygulanır, bu da daha yavaş olacağı anlamına gelir. Buradaki amacını göremiyorum. : - /
voodooattack

1

Bu gerekli. Js düğümünde düşük seviyeli bir eşzamanlılık mekanizmasının olmaması, matematik ve biyoinformatik vb. Alanlardaki uygulamalarını sınırlar. Ayrıca, iş parçacığıyla eşzamanlılık, düğümde kullanılan varsayılan eşzamanlılık modeliyle çakışmaz. Kullanıcı arayüzleri (ve düğümler) gibi ana olay döngüsüne sahip bir ortamda iş parçacığı için bilinen bir anlambilim vardır ve bunlar hala geçerli kullanımları olan çoğu durumda kesinlikle aşırı karmaşıktır.

Elbette, ortalama web uygulamanız iş parçacığı gerektirmeyecek, ancak biraz daha az geleneksel bir şey yapmayı deneyin ve ses seviyesi düşük eşzamanlılık ilkelinin olmaması sizi hızlı bir şekilde size sunacak başka bir şeye sürükleyecektir.


4
Ancak "matematik ve biyoinformatik" C #, JAVA veya C ++ dilinde yazılmış olsa daha iyi olurdu
Ian

Aslında Python ve Perl bu alanlardaki baskın dillerdir.
dryajov

1
Aslında bunu uygulamamın ana nedeni, makine öğrenmesi uygulamaları. Demek istediğin bir nokta var.
voodooattack

@dryajov FORTRAN'ın bazı hesaplamalı bilim alanlarında ne kadar büyük olduğunu bilmediğiniz için memnun olun ...
cmaster

@dryajov Çünkü Programcılar Tam Zamanlı Değil İnsanlar İçin Daha Erişilebilir, çünkü genom dizilemesinde doğal olarak daha iyi olduklarından değil, bunun için R gibi amaçlara dayalı diller ve Fortran gibi derlenmiş bilimsel diller var.
kedi

0

Gerçekten inanıyorum çünkü farklı ve güçlü bir fikir. İnanç sistemlerine karşı gidiyorsunuz. Ağ üzerinden ağ üzerinden yapılan eşyalar kabul edilmez veya popüler olmaz. Ayrıca hiç kimse yeni bir yığına uyum sağlamak istemez. İnsanlar çok farklı şeyleri otomatik olarak reddediyorlar.

Olası gibi görünmeyen normal bir npm modülü haline getirmek için bir yol bulabilirseniz, o zaman bazı insanlar onu kullanarak alabilirsiniz.


JS programcılarının satıcıya npm'ye kilitlendiğini mi kastediyorsunuz?
voodooattack

3
Buradaki soru, yeni bir çalışma zamanı sistemi ve bazı npm modülleri değil, aynı zamanda değişken paylaşımlı durum eşzamanlılığı hakkında gerçekten eski bir fikir.
Ankur

1
@voodooattack Demek istediğim, zaten popüler olan yaklaşıma beynin kilitli kaldığı ve statükonun önyargısının üstesinden gelmek imkansız olacak.
Jason Livesay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.