Kaydol

Merhaba Sevgili Floodlar.com Kullanıcısı, Web sitemizde geçirdiğiniz zaman ve bu büyüleyici flood evrenine katılımınız için teşekkür ederiz. Floodların geniş dünyasıyla dolu deneyiminizi daha fazla keşfetmek için, web sitemizi sınırsız olarak kullanabilmeniz adına giriş yapmanız gerekmektedir.

Oturum aç

Merhaba Floodlar.com Kullanıcısı, İlk üç sayfayı tamamladınız, tebrikler! Ancak, floodların devamını görmek ve daha fazla interaktif deneyim yaşamak için giriş yapmanız gerekiyor. Hesabınız yoksa, hızlıca oluşturabilirsiniz. Sınırsız floodlar ve etkileşimler sizleri bekliyor. Giriş yapmayı unutmayın!

Şifremi hatırlamıyorum

Şifreniz mi unuttunuz? Endişelenmeyin! Lütfen kayıtlı e-posta adresinizi giriniz. Size bir bağlantı göndereceğiz ve bu link üzerinden yeni bir şifre oluşturabileceksiniz.

Fil Necati Masonlar Locası Subreddit Adı Nedir? Cevap: ( N31 )

Üzgünüz, flood girme izniniz yok, Flood girmek için giriş yapmalısınız.

Lütfen bu Floodun neden bildirilmesi gerektiğini düşündüğünüzü kısaca açıklayın.

Lütfen bu cevabın neden bildirilmesi gerektiğini kısaca açıklayın.

Lütfen bu kullanıcının neden rapor edilmesi gerektiğini düşündüğünüzü kısaca açıklayın.

Mobil Uygulamada Açın

Güncel Floodlar En sonuncu Nesne

WebAssembly Konuları Chrome 70’te denemeye hazır

WebAssembly Konuları Chrome 70’te denemeye hazır

WebAssembly (Wasm), C++ ve diğer dillerde yazılmış kodların web üzerinde çalışacak şekilde derlenmesini sağlar. Yerel uygulamaların çok kullanışlı bir özelliği, paralel hesaplama için ilkel olan iş parçacıklarını kullanma becerisidir. Çoğu C ve C++ geliştiricisi aşina olacaktır. pthreads bir uygulamada iş parçacığı yönetimi için standartlaştırılmış bir API’dir.

bu WebAssembly Topluluk Grubu gerçek çok iş parçacıklı uygulamaları etkinleştirmek için iş parçacıklarını web’e getirmek için çalışıyor. Bu çabanın bir parçası olarak V8, WebAssembly motorundaki iş parçacıkları için gerekli desteği uygulamıştır. Menşe Denemesi. Origin Denemeleri, geliştiricilerin tamamen standartlaştırılmadan önce yeni web özelliklerini denemelerine olanak tanır. Bu, yeni özellikleri doğrulamak ve geliştirmek için kritik olan cesur geliştiricilerden gerçek dünyadaki geri bildirimleri toplamamızı sağlar.

Chrome 70 sürümü, WebAssembly için ileti dizilerini destekler ve ilgili geliştiricilerin bunları kullanmaya başlamasını ve bize geri bildirimde bulunmasını öneririz.

İş Parçacığı? Peki İşçiler? #

Tarayıcılar, Chrome 4’te 2012’den beri Web Çalışanları aracılığıyla paralelliği desteklemektedir; aslında ‘ana iş parçacığında’ vs. gibi terimler duymak normaldir. Ancak Web Çalışanları, iletişim için mesaj iletmeye güvenmek yerine aralarında değişebilir verileri paylaşmazlar. Aslında, Chrome her biri için yeni bir V8 motoru ayırır (izolasyonlar olarak adlandırılır). İzolasyonlar ne derlenmiş kodu ne de JavaScript nesnelerini paylaşırlar ve bu nedenle pthreads gibi değişken verileri paylaşamazlar.

WebAssembly thread’leri ise aynı Wasm belleğini paylaşabilen thread’lerdir. Paylaşılan belleğin altında yatan depolama, bir SharedArrayBuffer, tek bir ArrayBuffer içeriğini çalışanlar arasında eşzamanlı olarak paylaşmaya izin veren bir JavaScript ilkel. Her WebAssembly iş parçacığı bir Web Worker’da çalışır, ancak paylaşılan Wasm belleği, yerel platformlarda olduğu gibi çalışmalarına olanak tanır. Bu, Wasm iş parçacıklarını kullanan uygulamaların, herhangi bir geleneksel iş parçacıklı uygulamada olduğu gibi paylaşılan belleğe erişimi yönetmekten sorumlu olduğu anlamına gelir. Kullanan C veya C++ ile yazılmış birçok mevcut kod kitaplığı vardır. pthreadsve bunlar Wasm’da derlenebilir ve gerçek iş parçacıklı modda çalıştırılabilir, böylece daha fazla çekirdeğin aynı veriler üzerinde aynı anda çalışmasına izin verilir.

basit bir örnek #

İşte iş parçacıklarını kullanan basit bir ‘C’ programı örneği.

#include &LTpthread.h>
#include &LTstdio.h>

// Calculate Fibonacci numbers shared function
int fibonacci(int iterations) {
int val = 1;
int last = 0;

if (iterations == 0) {
return 0;
}
for (int i = 1; i iterations; i++) {
int seq;

seq = val + last;
last = val;
val = seq;
}
return val;
}
// Start function for the background thread
void *bg_func(void *arg) {
int *iter = (void *)arg;

*iter = fibonacci(*iter);
return arg;
}
// Foreground thread and main entry point
int main(int argc, char *argv[]) {
int fg_val = 54;
int bg_val = 42;
pthread_t bg_thread;

// Create the background thread
if (pthread_create(&bg_thread, NULL, bg_func, &bg_val)) {
perror("Thread create failed");
return 1;
}
// Calculate on the foreground thread
fg_val = fibonacci(fg_val);
// Wait for background thread to finish
if (pthread_join(bg_thread, NULL)) {
perror("Thread join failed");
return 2;
}
// Show the result from background and foreground threads
printf("Fib(42) is %d, Fib(6 * 9) is %d\n", bg_val, fg_val);

return 0;
}

Bu kod şununla başlar: main() 2 değişken bildiren işlev fg_val Ve bg_val. adlı bir işlev de vardır. fibonacci(), bu örnekte her iki iş parçacığı tarafından çağrılacak. bu main() işlevi kullanarak bir arka plan iş parçacığı oluşturur pthread_create() kimin görevi, değerine karşılık gelen fibonacci sayı dizisi değerini hesaplamaktır. bg_val değişken. bu arada, main() ön plan iş parçacığında çalışan işlev, fg_val değişken. Arka plan iş parçacığının çalışması tamamlandıktan sonra sonuçlar yazdırılır.

İş parçacığı desteği için derleme #

İlk olarak, sahip olmalısınız emscripten SDK yüklü, tercihen sürüm 1.38.11 veya üstü. Örnek kodumuzu oluşturmak için ileti dizileri etkinleştirildi tarayıcıda çalışmak için, tarayıcıya fazladan birkaç bayrak geçirmemiz gerekiyor. emprenye emcc derleyici. Komut satırımız şöyle görünür:

emcc -O2 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=2 -o test.js test.c

Komut satırı bağımsız değişkeni ‘-s USE_PTHREADS=1‘ derlenmiş WebAssembly modülü ve argümanı için iş parçacığı desteğini açar’-s PTHREAD_POOL_SIZE=2derleyiciye iki (2) iş parçacığından oluşan bir havuz oluşturmasını söyler.

Program çalıştırıldığında, başlık altında WebAssembly modülünü yükleyecek, thread havuzundaki her thread için bir Web Worker oluşturacak, modülü her bir çalışanla paylaşacak, bu durumda 2 tane olacak ve bunlar kullanılacak ne zaman çağrılsa pthread_create() yapılmış. Her çalışan, Wasm modülünü aynı bellekle başlatarak işbirliği yapmalarını sağlar. V8’in 7.0’daki en yeni değişiklikleri, çalışanlar arasında iletilen ve çok büyük uygulamaların bile birçok çalışanı kapsayacak şekilde ölçeklenmesine izin veren derlenmiş yerel Wasm modül kodunu paylaşır. İş parçacığı havuzu boyutunun, uygulamanızın ihtiyaç duyduğu maksimum iş parçacığı sayısına eşit olduğundan emin olmanız mantıklıdır, aksi takdirde iş parçacığı oluşturma başarısız olabilir. Aynı zamanda, iş parçacığı havuzu boyutu çok büyükse, belleği kullanmaktan başka hiçbir şey yapmadan oturup gereksiz Web Çalışanları yaratmış olursunuz.

nasıl denenir #

WebAssembly modülümüzü test etmenin en hızlı yolu, Chrome 70’ten sonraki deneysel WebAssembly dizi desteğini açmaktır. URL’ye gidin about://flags tarayıcınızda aşağıda gösterildiği gibi:

Ardından, şuna benzeyen deneysel WebAssembly iş parçacıkları ayarını bulun:

Ayarı şu şekilde değiştirin: Etkinleştirilmiş aşağıda gösterildiği gibi, ardından tarayıcınızı yeniden başlatın.

Tarayıcı yeniden başlatıldıktan sonra, zincirli WebAssembly modülünü yalnızca bu içeriği içeren minimal bir HTML sayfasıyla yüklemeyi deneyebiliriz:

&LT!DOCTYPE html>
html>
title>Threads test&LT/title>
body>
script src="test.js">&LT/script>
&LT/body>
&LT/html>

Bu sayfayı denemek için, bir tür web sunucusu çalıştırmanız ve onu tarayıcınızdan yüklemeniz gerekir. Bu, WebAssembly modülünün yüklenmesine ve çalışmasına neden olur. DevTools’u açmak bize çalıştırmanın çıktısını gösterir ve konsolda aşağıdaki çıktı görüntüsüne benzer bir şey görmelisiniz:

Konu içeren WebAssembly programımız başarıyla yürütüldü! Yukarıda özetlenen adımları kullanarak kendi iş parçacığı uygulamanızı denemenizi öneririz.

Origin Denemesi ile sahada test etme #

Tarayıcıda deneysel bayrakları açarak dizileri denemek, geliştirme amaçları için iyidir, ancak uygulamanızı sahada test etmek isterseniz, bunu köken denemesi.

Origin denemeleri, alanınıza bağlı bir test jetonu alarak kullanıcılarınızla deneysel özellikleri denemenizi sağlar. Daha sonra uygulamanızı dağıtabilir ve test ettiğiniz özelliği destekleyebilen bir tarayıcıda çalışmasını bekleyebilirsiniz (bu durumda Chrome 70 ve sonrası). Bir kaynak denemesi çalıştırmak üzere kendi jetonunuzu almak için uygulamayı kullanın burada oluştur.

Yukarıdaki basit örneğimizi bir başlangıç ​​deneme belirteci kullanarak barındırdık, böylece şunları yapabilirsiniz: kendin için dene hiçbir şey inşa etmeye gerek kalmadan.

Paralel çalışan 4 iş parçacığının ASCII sanatı için neler yapabileceğini görmek istiyorsanız, o zaman bir şu demoya bak ilave olarak!

Bize geri bildirimde bulunun #

WebAssembly iş parçacıkları, uygulamaları web’e taşımak için son derece kullanışlı yeni bir ilkeldir. gerektiren C ve C++ uygulamalarını ve kitaplıklarını çalıştırmak artık mümkün. pthreads WebAssembly ortamında destek.

Standardizasyon sürecini bilgilendirmenin yanı sıra yararlılığını doğrulamaya yardımcı olacağı için bu özelliği deneyen geliştiricilerden geri bildirim bekliyoruz. Geri bildirim göndermenin en iyi yolu, sorunları bildir ve/veya dahil olmak standardizasyon süreç içinde WebAssembly Topluluk Grubu.

İlgili Mesajlar

Yorum eklemek için giriş yapmalısınız.