« Tüm yayınlar

Eşzamanlı JavaScript: JSC İçin Thread Tabanlı Bir Model (2017)

WebKit'in JavaScriptCore ekibinin 2017 tarihli, tüm JS heap'ini thread'ler arasında paylaşmayı teknik olarak inceleyen düşünce deneyimi.

WebKit'in JavaScriptCore ekibi, SharedArrayBuffer ile sınırlı kalan JS eşzamanlılığını tüm heap'e yaymanın teknik olarak mümkün olup olmadığını inceleyen bir düşünce deneyimi paylaşıyor. Öneri, ayrı stack'lere sahip ama heap'i paylaşan Thread nesneleri, Atomics API'sinin herhangi bir özellik üzerinde kilit kurmaya izin verecek şekilde genişletilmesi ve Lock/Condition/ThreadLocal yardımcı sınıflarını kapsayan bir strawman tasarımdan oluşuyor.

Yazının odak noktası, mevcut tek-thread varsayımına dayalı JSC optimizasyonlarının bu değişiklikle nasıl korunabileceği. Hedefler arasında eşzamanlılık kullanmayan kodda performans kaybı olmaması, paylaşım yapmadan paralel çalıştırmada doğrusal ölçeklenme, paylaşım yapan kodda da serial baseline'lara göre hızlanma ve donanımın sunduğundan daha zayıf olmayan bir bellek modeli yer alıyor.

Uygulama taslağı, çoğu özellik erişiminde neredeyse sıfır maliyetli (bir aritmetik işlem kadar) bir overhead öngörürken, nadir ve karmaşık durumlarda bu maliyetin 7 kata kadar çıkabileceğini belirtiyor. 64-bit sistemlere dayanan yaklaşım henüz ampirik olarak test edilmemiş olsa da, mühendisler için JS motorlarında gerçek thread desteğinin ne gibi mimari zorluklar getirdiğine dair değerli bir bakış sunuyor.